我正在使用python而我正在制作游戏,但有一件事我没有。
为什么这个布尔值重置?我不希望布尔'powerup'重置。
def spawnPowerup()
number = 0
powerup = False
if (a certain thing happens, the thing happens for one frame.):
number = random.randint(1,2)
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
这段代码背后的想法是,每当事情发生时,我都会得到一个数字。当数字等于1时,应该激活上电,但由于改变整个时间的数字我需要这个布尔值。因此,只要数字等于1,我就更改布尔值,因此当数字等于1时,if语句将始终为true。但问题是布尔值重置。如果事情发生了几次就会打印出来:
False
True
False
True
False
True
False
True
答案 0 :(得分:2)
进入函数时,总是将布尔值设置为False,因此自然会被重置。但这是一个局部变量;它无论如何都不存在于函数之外。
答案 1 :(得分:2)
powerup
都设置为False
。所以当你打击时:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
如果您输入该块,则 number
必须为1
(除非您有其他未显示的代码)。因此,当您进行首次打印时,powerup
仍为False
。您设置为True
,然后重新打印
答案 2 :(得分:1)
这让你感到困惑:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
此处仅打印powerup
的值。在第一个print
语句中,值始终为False
,之后为True
。您只会在执行if
块时将其打印出来,并将powerup
更改为True
。要详细了解此问题,只需在print(powerup)
阻止之前添加if
。