【发布时间】:2015-06-16 14:31:19
【问题描述】:
我正在使用 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 语句将始终为真。但问题是布尔值重置。如果事情发生了几次,这将被打印出来:
False
True
False
True
False
True
False
True
【问题讨论】:
-
布尔重置是什么意思?你能多放一些 printlns 看看它是否在 number == 2 时重置?
-
在第二个 if 语句中,
powerup的值将始终为 false,因为您在函数开头将其更改为 false -
每个人都在这里得到的是,您需要查看
powerup变量的范围。现在因为它在函数内部,所以它是一个每次都会重置的私有变量。考虑将powerup放在spawnPowerup之外的全局范围内。这将防止它在您每次调用spawnPowerup时被重置,除非您在函数本身内重置它。这是一篇关于范围 stackoverflow.com/questions/291978/… 的好文章参考 -
@Kyrubas 谢谢!我现在明白了!