为了账号安全,请及时绑定邮箱和手机立即绑定

当 player2 与金钱发生碰撞时游戏崩溃。错误信息:unboundLocalError:

当 player2 与金钱发生碰撞时游戏崩溃。错误信息:unboundLocalError:

梵蒂冈之花 2023-01-04 11:20:50
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 游戏。每当 player2 与钱发生碰撞时,player2 应该收集它并获得分数。每当 player2 与金钱发生碰撞时,它就会使游戏崩溃,并给我一个错误消息:UnboundLocalError:赋值前引用的局部变量“score2”。
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超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假定为 范围内的update变量,因为该变量是在score2 += 1. 但是,该语句score2 += 1会导致异常,因为它会在变量定义之前尝试读取它。


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信