import randomWIDTH = 800HEIGHT = 500background = Actor("background")player = Actor("player")enemy = Actor("enemy")money = Actor("money", pos=(300,300))player2 = Actor("alien")score = 0score2 = 0player.x = 200player.y = 200player2.x= 400player2.y= 400def draw(): screen.clear() background.draw() player.draw() enemy.draw() money.draw() player2.draw()def update(): global score if keyboard.right: player.x = player.x + 4 if keyboard.left: player.x = player.x - 4 if keyboard.down: player.y = player.y + 4 if keyboard.up: player.y = player.y - 4 if player.x > WIDTH: player.x = WIDTH if player.x < 0: player.x = 0 if player.y < 0: player.y = 0 if player.y > HEIGHT: player.y = HEIGHT if keyboard.d: player2.x = player2.x + 4 if keyboard.a: player2.x = player2.x - 4 if keyboard.s: player2.y = player2.y + 4 if keyboard.w: player2.y = player2.y - 4 if player.colliderect(player2): exit() if player2.x > WIDTH: player2.x = WIDTH if player2.x < 0: player2.x = 0 if player2.y < 0: player2.y = 0 if player2.y > HEIGHT: player2.y = HEIGHT 這是一個用 mu editor 制作的 python 游戲。每當(dāng) player2 與錢發(fā)生碰撞時,player2 應(yīng)該收集它并獲得分數(shù)。每當(dāng) player2 與金錢發(fā)生碰撞時,它就會使游戲崩潰,并給我一個錯誤消息:UnboundLocalError:賦值前引用的局部變量“score2”。
1 回答

千萬里不及你
TA貢獻1784條經(jīng)驗 獲得超9個贊
你錯過了申報gloabl score2:
def update():
global score, score2 # <----
# [...]
if money.colliderect(player2):
money.x = random.randint(0, WIDTH)
money.y = random.randint(0, HEIGHT)
score2 += 1
請注意,如果您不聲明score2為global變量,則scope2假定為 范圍內(nèi)的update變量,因為該變量是在score2 += 1. 但是,該語句score2 += 1會導(dǎo)致異常,因為它會在變量定義之前嘗試讀取它。
添加回答
舉報
0/150
提交
取消