我是 Python 的新手,但我环顾四周,没有看到任何与我正在尝试做的事情相匹配的东西。
我正在使用 PyGame 检测三个对象(球、方 block A、方 block B)之间的碰撞。我想要做的是,如果球击中方 block B,则 X 发生,但前提是它之前击中过方 block A。因为这是在一个连续发生的循环中,我不能简单地将 ballAcollide 设置为 true,因为它会立即重置。
我目前有一些可行的方法,但我确信这是一个丑陋的解决方法,并且有更好的方法来实现它。这是有问题的代码片段:
def fastball(ball, squareA, squareB):
# This needs to be improved
if ball.rect.colliderect(squareA.rect):
# do unrelated
global firsthit
firsthit = False
elif ball.rect.colliderect(squareB.rect):
try:
if not firsthit:
# do X
except NameError:
# do nothing
最佳答案
根据PatrickArtner的建议回答:
def fastball2(ball, squareA, squareB, list):
if ball.rect.colliderect(squareA.rect):
if len(list) == 0:
list.append('A')
# do unrelated
elif ball.rect.colliderect(squareB.rect) and len(list) > 0:
# do x
如果满足某些条件,列表将在循环中的不同点刷新。感谢您的帮助!
关于python - 确定循环中的第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260349/