pygame新手。需要有冲突的建议
我试图做一个简单的pygame,目标在屏幕上移动,用户的控件是十字准线。您可以使用鼠标在屏幕上自由移动十字准线,当您点击它时会发出枪声,就好像您正在拍摄目标一样。但是,我在检测与两者的碰撞方面遇到了麻烦。
if ammo > 0:
if event.type == pygame.MOUSEBUTTONDOWN:
gunshot.play()
ammo -= 1
print(ammo)
if x == range(target_x,target_x+60) and y == range(target_y,target_y+60):
print('hit!')
else:
print('miss!')
这是我的代码的预览,在制作枪,射击的功能内。如果鼠标的x值等于目标x值的范围,则为目标x值+ 60,因为它是60x60图像。同样的事情发生在两者的y值上。该范围不起作用,但我不知道如何检测十字准线是否在目标的矩形值
答案 0 :(得分:0)
如果[x,y]
对应于鼠标的坐标。然后x
和y
只是整数而非范围,因此您需要将==
更改为in
。您正在检查某些范围内的x
是否1>} 某个范围内。这种方式也更清晰易读,因为代码
y
读为
if x in range(x_target,x_target + 60)\
and y in range(y_target, y_target + 60):
为了进一步提高可读性,您可以:
If mouse is in (on) target?
甚至可能更好地创建单独的函数/方法。
import itertools
x_target_range = range(x_target, x_target + 60)
y_target_range = range(y_target, y_target + 60)
if (x,y) in itertools.product(x_target_range, y_target_range):
# do stuff
课程的实施取决于您的数据表示。