【问题标题】:pygame NameError: name 'wall' is not definedpygame NameError:名称“墙”未定义
【发布时间】:2015-05-05 23:25:24
【问题描述】:

迷宫游戏 - 之前所说的墙壁没有定义,直到我将墙壁 =[] 移出游戏循环(而 True :)

class Wall (object):
    def __init__(self,pos):
        walls.append(self)
        self.rect = pygame.Rect(pos[0], pos[1], 16, 16)



    x = 0
    y = 0

    for row in level:
        for col in row:
            if col == 'W':
                Wall((x, y))
            if col == "E":
                end_rect = pygame.Rect (x, y,16,16)
            x = x + 16
        y = y + 16
        x = 0

【问题讨论】:

  • walls 此处未定义。 walls=[]在哪里?
  • 这不是全部代码。 wall = [] 定义在顶部,尽管这可能不适合它。
  • 您遇到的错误在哪里?我没有看到 wall 未定义。
  • 您不能在方法之外的类范围内实例化对象。底部的代码应该是全局的。请参阅here 了解更多信息。

标签: python pygame


【解决方案1】:

试试这个,你的一半代码应该是全局的,这是一个范围问题。请参阅here 了解更多信息。

class Wall (object):
    def __init__(self,pos):
        walls.append(self)
        self.rect = pygame.Rect(pos[0], pos[1], 16, 16)

x = 0
y = 0

for row in level:
    for col in row:
        if col == 'W':
            Wall((x, y))
        if col == "E":
            end_rect = pygame.Rect (x, y,16,16)
        x = x + 16
    y = y + 16
    x = 0

基本上,类体中的代码甚至在类创建之前就已执行;因此,您将无法在类范围内实例化给定类的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多