2015-09-09 9 views
0

Я использую Pygame, чтобы создать платформерную игру, и я пытаюсь использовать класс для рисования платформ на каждом уровне.Объект не имеет атрибута: 'add_internal'

Вот класс для Level01:.

class Level01(Level): 
def __init__(self): 
    Level.__init__(self) 

    walls = [[300, 600, 210, 70], 
      [500, 500, 210, 70] 
      ] 

    for item in walls: 
     wall = Wall(item[0], item[1], item[2], item[3]) 
     self.wall_list.add(wall) 

Последняя строка в этом коде (self.wall_list.add (стене), кажется, где у меня ошибка возвращает «AttributeError:» Wall»объект не имеет атрибута 'add_internal'

А вот класс для стен:.?

class Wall(object): 
def __init__(self, x, y, width, height): 
    super().__init__() 
    self.image = pygame.Surface([width, height]) 
    self.image.fill(green) 

    self.rect = self.image.get_rect() 
    self.rect.x = x 
    self.rect.y = y 

Может кто-то помочь мне

EDIT: Вот код класса Уровень:

class Level(object): 
wall_list = None 
enemy_sprites = None 

def __init__(self): 
    self.wall_list = pygame.sprite.Group() 
    self.enemy_sprites = pygame.sprite.Group() 
+0

возможно супер (стена, я) .__ init __()? – wolendranh

+0

@wolendranh: что бы это сделало, чтобы избежать ошибки с экземпляром 'Wall'? –

+2

Итак, какой же объект является 'wall_list' здесь? –

ответ

0

Мне кажется wall_list является Group (или любой подкласс этого), и вы пытаетесь добавить не- Sprite объект к нему (подсказка: Group звонит add_internal на все спрайты, которые добавляются).

Если вы хотите использовать Group с вашим классом Wall, дайте Wall наследовать от Sprite.

Смежные вопросы