pygame-分配前引用的局部变量

吕文斯基

我一直在努力解决一个问题:gameLoop()中的赋值之前引用了局部变量'snake'当我按下一个键移动蛇时,它会弹出...我不知道如何解决-我认为“全局蛇”就足够了。如果您有任何解决方案,请告诉我-提前谢谢!:)

import pygame
import sys
black = (0, 0, 0)
white = (255, 255, 255)

def displayElements():
    global snake
    snake = pygame.Rect(360, 200, 30, 10) 
    pygame.draw.rect(screen, white, snake)

def gameSetup():
    global screen, window, fps, step
    pygame.init()
    screen = pygame.display.set_mode((720, 400))
    window = screen.get_rect()
    pygame.key.set_repeat(15, 15)
    fps = pygame.time.Clock()
    step = 5
    displayElements()

def gameLoop():
    while True:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    snake = snake.move(0,-step)
                if event.key == pygame.K_DOWN:
                    snake = snake.move(0,step)

        fps.tick(120)
        pygame.display.flip()

def main():
    gameSetup()
    gameLoop()

main()
CJR

global snake只是告诉displayElements()snake在全局名称空间中使用。

但是,什么也没有告诉gameLoop()要在全局名称空间中查找蛇。

通常,您不应使用global该规则很少有例外,这绝对不是这些例外之一-您应该重写此规则以将引用传入和传出函数。像这样的东西。

def displayElements():
    snake = pygame.Rect(360, 200, 30, 10) 
    pygame.draw.rect(screen, white, snake)
    return snake

def gameSetup():
    ...
    return displayElements()

def gameLoop(snake):
    ...

def main():
    snake = gameSetup()
    gameLoop(snake)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

UnboundLocalError:分配前已引用局部变量“事件”(PYGAME)

Python pygame-弹跳球(UnboundLocalError:分配前引用了局部变量'move_y')

PyGame局部变量

什么是“分配前引用的局部变量”

分配前引用的局部变量X

分配前引用的局部变量

分配前已引用局部变量“ ...”

分配前引用的局部变量-错误

难以理解“分配前引用的局部变量”

UnboundLocalError:分配前已引用局部变量“ opTuple”

无局部变量,但警告:分配前已引用

UnboundLocalError:分配前已引用局部变量“ req”

ipython%timeit“分配前引用了局部变量'a'

UnboundLocalError:分配前引用了局部变量“pin”

Django上下文:分配前引用的局部变量

简单函数问题,分配前已引用局部变量

python err:分配前引用的局部变量

Python-分配前引用的局部变量

在if语句后出现“ UnboundLocalError:分配前引用的局部变量”

Python 3:UnboundLocalError:分配前引用的局部变量

分配前已引用局部变量“列表”

UnboundLocalError:分配前已引用局部变量“ cursor”

UnboundLocalError:分配前已引用局部变量“键”

UnboundLocalError:分配前已引用局部变量“ slcount”

While循环:UnboundLocalError:分配前引用的局部变量

Python错误-分配前的局部变量引用

Django:UnboundLocalError:分配前已引用局部变量“ company”

UnboundLocalError:分配前已引用局部变量“ ticketCost”

UnboundLocalError:分配前已引用局部变量“ settingsText”