全局游戏变量未更新

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
        ...