在游戏中你移动的是简单的blitted图像,没有步行动画或任何东西,并试图在开门的路上收集钥匙,最终逃离你所在的监狱。
当我试图“击中”掉落钥匙的守卫时,我遇到了一个问题。当我尝试从另一个类中定义的组中删除sprite时,它告诉我该项未定义。
追踪(最近的呼叫最后):
文件“C:/ Users / - / Desktop / escapeprison / escape.py”,第329行,in
current_level.npcs.remove(NPC)
NameError:名称'npc'未定义
class Level(object):
wall_list = None
npcs = None
def __init__(self):
self.wall_list = pygame.sprite.Group()
self.npcs = pygame.sprite.Group()
class Level1(Level):
def __init__(self):
super().__init__()
#(x_pos, y_pos, width, height)
#[x, y, width, height, color]
npc = Npc(480, 40)
npc.move = 0
self.npcs.add(npc)
walls = [[0, 0, 5, 500, WALL],
[0, 550, 5, 50, WALL],
[0, 0, 800, 5, WALL],
[0, 595, 800, 5, WALL],
[795, 0, 5, 600, WALL],
[390, 0, 5, 70, WALL],
[390, 120, 5, 150, WALL],
[390, 320, 5, 150, WALL],
[390, 520, 5, 80, WALL],
[550, 300, 5, 300, WALL],
[550, 300, 150, 5, WALL],
[750, 300, 50, 5, WALL],
[600, 380, 1, 150, WALL],
#Sellien väliseinät
[0, 195, 390, 5, WALL],
[0, 395, 390, 5, WALL]
]
for item in walls:
wall = Wall(item[0], item[1], item[2], item[3], item[4])
self.wall_list.add(wall)
魔法应该发生在我的游戏循环中的类外面,如果我按空格它会检查我是否足够接近npc并且应该从列表中删除它
if player.rect.x >= 440 and player.rect.x <= 520 and player.rect.y >= 20 and player.rect.y <= 80:
npc_scene = 1
current_level.npcs.remove(npc)
npc = Npc(480, 45)
current_level.npcs.add(npc)
“可能还需要”
levels = []
level = Level1()
levels.append(level)
level = Level2()
levels.append(level)
current_level_no = 0
current_level = levels[current_level_no]
答案 0 :(得分:0)
此异常表示解释器在您尝试使用它的代码部分中无法识别变量名npc
(current_level.npcs.remove(npc)
)。
为了使其可识别,您必须将其作为参数接收,或使其成为全局。
阅读python here中的变量范围。
答案 1 :(得分:0)
将一个碰撞检查方法添加到Level类并传入播放器rect,然后循环遍历npc组并测试它们是否接近。改变区域以获得所有通用的东西,然后每个级别只是墙壁和继承的npc代码,这样的东西? : -
else