Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未定义全局变量-Python和PyGame_Python_Variables_Pygame_Global - Fatal编程技术网

未定义全局变量-Python和PyGame

未定义全局变量-Python和PyGame,python,variables,pygame,global,Python,Variables,Pygame,Global,我试着创造一个Flappy鸟克隆。当我试图定义一些全局变量时,VisualStudio告诉我这些变量不在全局范围内定义 有人能帮我吗 我试图在全局范围内移动变量,但我不明白为什么这个解决方案不起作用 这是我的密码 提前谢谢 导入pygame 随机输入 pygame.init() background=pygame.image.load('img/background.png') base=pygame.image.load('img/base.png') bird=pygame.image.lo

我试着创造一个Flappy鸟克隆。当我试图定义一些全局变量时,VisualStudio告诉我这些变量不在全局范围内定义

有人能帮我吗

我试图在全局范围内移动变量,但我不明白为什么这个解决方案不起作用

这是我的密码 提前谢谢

导入pygame
随机输入
pygame.init()
background=pygame.image.load('img/background.png')
base=pygame.image.load('img/base.png')
bird=pygame.image.load('img/bird.png')
gameover=pygame.image.load('img/gameover.png')
pipe\u down=pygame.image.load('img/pipe.png')
pipe\u up=pygame.transform.flip(pipe\u down,False,True)
windowX=288
winwowY=512
帧速率=50
display_surface=pygame.display.set_模式((windowX,winwowY))
FPS=帧速率
pygame.display.set_标题('Flappy Bird'))
def drawObject():
显示曲面.blit(背景,(0,0))
显示表面闪电(鸟,(鸟,鸟)
def update():
pygame.display.update()
pygame.time.Clock().tick(FPS)
#这里是定义全局变量的地方
def初始化():
全球鸟数,鸟数,鸟速
birdX=60
小鸟=150
鸟速=0
初始化()
尽管如此:
鸟速+=1
小鸟+=小鸟的速度
drawObject()
更新()

这条消息准确地告诉您问题所在。全局变量未在全局范围中定义

这意味着,对于您告诉它要从全局名称空间
global birdX,birdY,birdSpeedY
使用的这些变量,它希望在最上面的名称空间中找到这些变量的定义。
global
关键字不会仅仅因为您使用它就在全局名称空间中创建它们。他们必须独立存在于那里

要在全局范围中定义它们,需要在全局命名空间中为它们赋值,而不是在函数或类中。这不能是
+=
,因为这是一个引用和赋值,因此它假设定义必须在别处(或者在赋值之前引用)

因此,在全局名称空间的某个地方,您需要一个赋值。如果要在函数中处理初始化(正如您所做的),它仍然必须在该函数之外定义/分配,但它可以是任何值,如
None
。因此,您可以在程序顶部附近添加以下内容:

birdX=None
鸟=无
鸟速=无
然后仍然按原样使用
initializes()


或者,在您的情况下,您可能只需要将这些内容放入
initializes()
中,并将其放在顶级/全局级别。

谢谢您的帮助:)