我在做蛇游戏,我需要检查碰撞。因此,我创建了两种方法。第一个检查碰撞,另一个关闭游戏,等等。我在每个游戏滴答声中检查这些碰撞。我使用了for循环,但似乎该循环仅检查正文列表中的第一项。
我尝试了print()来查看代码在哪里打ic。我发现for循环只会想到列表中的第一项(self.body_count)。
def collision(self, snake, obs):
for i in obs:
if i.x == snake.x and i.y == snake.y:
print("pre pí")
return True
else:
return False
def check_coll(self):
if self.collision(self.snake_head, self.body_count):
pyglet.app.exit()
答案 0 :(得分:1)
您将在第一次迭代中返回。相反,您应该做的是以下操作:
def collision(self, snake, obs):
for i in obs:
if i.x == snake.x and i.y == snake.y:
print("pre pí")
return True
return False
答案 1 :(得分:0)
因为您正在循环内返回。
可能的解决方案可能是:
def collision(self, snake, obs):
did_collide = False
for i in obs:
if i.x != snake.x and i.y != snake.y:
return True
return did_collide