首页 > 解决方案 > 在分配错误之前引用的局部变量

问题描述

我对编码非常陌生,并且正在尝试制作一款我可以称之为自己的游戏。我不明白错误的含义,但这是我的代码:

import pgzrun
import math
import random

WIDTH = 800                       #5
HEIGHT = 600
CENTER_X = WIDTH/2
CENTER_Y = HEIGHT/2
CENTER = (CENTER_X, CENTER_Y)
FONT_COLOR = (221, 160, 221)      #10
ozol = 0

game_over = False

ozolith = Actor("ozolith")        #15

def draw():
    screen.clear()
    ozolith.draw()
    draw_counters(ozol)           #20

def place_ozolith():
    ozolith.x = CENTER_X
    ozolith.y = CENTER_Y
                                  #25
def draw_counters(ozol):
    screen.draw.text(str(ozol), fontsize=40, center=CENTER, color=FONT_COLOR)

def on_mouse_down(pos):
    if ozolith.collidepoint(pos): #30
        ozol += 1
        place_ozolith
    else:
        quit()
                                  #35
place_ozolith

pgzrun.go()

这是错误消息

Traceback (most recent call last):
  File "C:\Program Files\Python38\python-games\GameCraft\GameCraft.py", line 38, in <module>
    pgzrun.go()
  File "C:\Program Files\Python38\lib\site-packages\pgzrun.py", line 31, in go
    run_mod(mod)
  File "C:\Program Files\Python38\lib\site-packages\pgzero\runner.py", line 113, in run_mod
    PGZeroGame(mod).run()
  File "C:\Program Files\Python38\lib\site-packages\pgzero\game.py", line 217, in run
    self.mainloop()
  File "C:\Program Files\Python38\lib\site-packages\pgzero\game.py", line 247, in mainloop
    self.dispatch_event(event)
  File "C:\Program Files\Python38\lib\site-packages\pgzero\game.py", line 172, in dispatch_event
    handler(event)
  File "C:\Program Files\Python38\lib\site-packages\pgzero\game.py", line 164, in new_handler
    return handler(**prepped)
  File "C:\Program Files\Python38\python-games\GameCraft\GameCraft.py", line 31, in on_mouse_down
    ozol += 1
UnboundLocalError: local variable 'ozol' referenced before assignment

一旦我单击卡在左上角的图像,就会发生这种情况。

标签: pythonpygame

解决方案


    ozol += 1

相当于

    ozol = ozol + 1

ozol没有初始值,因此错误。


推荐阅读