全局游戏变量未更新
Global game variables not being updated
我正在制作一个有两个主要全局变量的游戏
game_over = False
flying = True
在我的 Bird class 中,我可以引用这些变量。在 Bird() class 的任何地方我都没有更改这些变量
class Bird(pygame.sprite.Sprite):
def __init__(self):
...
def update(self):
if (flying == True) and (game_over == False):
...
if game_over == False:
...
但是,在另一个 class 中,我需要引用和设置这些变量
class Button1(pygame.sprite.Sprite):
def __init__(self):
...
def update(self):
if game_over == True:
...
if pygame.mouse.get_pressed()[0] == 1 and self.clicked == False:
...
game_over = False
flying = True
在这里,我得到错误:
UnboundLocalError: local variable 'game_over' referenced before assignment
它不是设置全局game_over和全局飞行,而是创建新的局部变量game_over和飞行。
我该如何解决这个问题?
为了在Python中设置全局变量,您需要在函数的顶部声明它们。例如,
def update(self):
global flying, game_over
if game_over == True:
...
if pygame.mouse.get_pressed()[0] == 1 and self.clicked == False:
...
game_over = False
flying = True
...
我正在制作一个有两个主要全局变量的游戏
game_over = False
flying = True
在我的 Bird class 中,我可以引用这些变量。在 Bird() class 的任何地方我都没有更改这些变量
class Bird(pygame.sprite.Sprite):
def __init__(self):
...
def update(self):
if (flying == True) and (game_over == False):
...
if game_over == False:
...
但是,在另一个 class 中,我需要引用和设置这些变量
class Button1(pygame.sprite.Sprite):
def __init__(self):
...
def update(self):
if game_over == True:
...
if pygame.mouse.get_pressed()[0] == 1 and self.clicked == False:
...
game_over = False
flying = True
在这里,我得到错误:
UnboundLocalError: local variable 'game_over' referenced before assignment
它不是设置全局game_over和全局飞行,而是创建新的局部变量game_over和飞行。
我该如何解决这个问题?
为了在Python中设置全局变量,您需要在函数的顶部声明它们。例如,
def update(self):
global flying, game_over
if game_over == True:
...
if pygame.mouse.get_pressed()[0] == 1 and self.clicked == False:
...
game_over = False
flying = True
...