Python:循环时,如何保持反击



我正在尝试创建一个有2个计数器,A和B的游戏,并且游戏继续进行,而A不等于2(最初为0),而B不等于5(最初3),每次公主都会增加窗口上的某个点。我在保留A和B值时遇到困难。我正在Zelle的第二版图形框架上建立该游戏。我的b似乎从未上升到4以上,总是回到3,而不是曾经到达5以停止循环。

相关代码如下(我的图像公主是一个具有自己的构造函数和方法移动的类),用于处理B:

的代码
.... (irrelevant class informtion) ...
# I did not pass b into the __init__ 
# I only passed it into the move method, is that fine?
def move( self, mouse, b ):
    dX = 0
    if mouse.getY() > 300:
        dY = 2
    else:
        dY = -2
    self.img.move( dX, dY )
    if self.img.getAnchor().getY() == 350:
        newB = b + 1
        return newB
    else:
        return b

.....(无关紧要的代码)...

while a != 2 or b!= 5:
    mouse = win.getMouse()
    b = 3
    princess.move( mouse, b )
    newB = princess.move( mouse, b )
    continue

我会说这只是与范围有关,但是进一步挖掘似乎并非如此。

您有一个时循环,应该在a==2 and b==5最初设置为0时结束,但是在循环中,您永远不会更改a,因此第一个条件将始终为true,您将获取无限循环。

您的b总是回到3,因为您在循环中有b=3,并且您永远不会将其设置为其他。我认为princess.move(...)功能返回新位置b

此外,循环末端的continue完全是多余的。

尝试以下操作:

a,b = 0,0
while a != 2 or b!= 5:
    mouse = win.getMouse()
    b = princess.move(mouse, b)

作为旁注,您是否计划在其中使用a在其中做某事?因为目前它没有做任何事情,所以这应该足够:

b = 0
while b!= 5:
    mouse = win.getMouse()
    b = princess.move(mouse, b)

,然后作为另一个注释,称为变量ab对于阅读您的代码的任何人都无助。命名为有益。

您永远不会更改b的值。也许您想在循环中说b = princes.move(mouse,b),因此B会增加。在您的代码b中,b value 3永远。

相关内容

  • 没有找到相关文章

最新更新