我正在尝试创建一个有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)
,然后作为另一个注释,称为变量a
和b
对于阅读您的代码的任何人都无助。命名为有益。
您永远不会更改b的值。也许您想在循环中说b = princes.move(mouse,b)
,因此B会增加。在您的代码b中,b value 3永远。