为什么列表中没有这个for循环?

时间:2019-08-26 19:38:26

标签: python loops for-loop

我在做蛇游戏,我需要检查碰撞。因此,我创建了两种方法。第一个检查碰撞,另一个关闭游戏,等等。我在每个游戏滴答声中检查这些碰撞。我使用了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()

2 个答案:

答案 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