Pygame中Game对象无createTilemap属性错误求助
问题解决:AttributeError: 'Game' object has no attribute 'createTilemap'
错误根源
你将createTilemap方法定义在了__init__方法的内部,这使得它只是__init__里的局部函数,而非Game类的实例方法,因此调用self.createTilemap()时会找不到该属性。
修正后的代码
把createTilemap方法移到__init__外部,作为Game类的直接成员方法,同时调整new方法内的执行顺序(先初始化精灵组,再创建瓦片地图,避免精灵无法加入对应组):
import pygame from sprites import * from config import * import sys class Game: def __init__(self): pygame.init() self.screen = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT)) self.clock = pygame.time.Clock() self.running = True def createTilemap(self): for i, row in enumerate(tilemap): for j, column in enumerate(row): if column == "B": Block(self, j, i) if column == "P": Player(self, j, i) def new(self): # 先初始化所有精灵组,再创建瓦片地图 self.all_sprites = pygame.sprite.LayeredUpdates() self.blocks = pygame.sprite.LayeredUpdates() self.enemies = pygame.sprite.LayeredUpdates() self.attacks = pygame.sprite.LayeredUpdates() self.createTilemap() self.playing = True
内容的提问来源于stack exchange,提问作者Ace Skywalker - Gaming Videos
相关产品推荐
相关产品推荐

