如何在多个条件下进行正确的循环?

时间:2014-04-25 05:00:00

标签: python

我正在制作一个游戏并且'按下键'它将角色(自我)向下移动..我正在尝试用碰撞检测修复一些事情。我在下面的例子中的问题是第二行总是返回True。我在第二行尝试做的是说“如果角色与小部件发生碰撞,但是角色y值低于它与高度碰撞的小部件高度的一半,则将角色向下移动。

因为它总是返回True,所以我的角色可以向下移动而不管任何碰撞,无论字符y值如何(它可以在中间部分的小部件之上,我仍然可以向下移动)。

我在这里做错了什么?

elif keycode[1] == 'down':
    if any(self.collide_widget(i) and self.y < (i.y+(i.height/2)) for i in listofwidgets):
        self.y -=6
        self.source='characters/lilmoney/walkdown.zip'
    elif (i.collide_point(self.x, self.top) for i in listofwidgets):
        self.source='characters/lilmoney/lilmoneyfront.png'

1 个答案:

答案 0 :(得分:3)

您在any声明中遗漏了elif。所以,你留下了一台发电机,这总是正确的。因此,将该语句更改为

elif any(i.collide_point(self.x, self.top) for i in listofwidgets):