изображение pygame AttributeError

Я пытаюсь создать игру pacman с помощью pygame, но столкнулся с несколькими проблемами. Это говорит о том, что у «Еды» нет изображения.

Это моя игра pacman [код отредактирован].

Проблема в том, что в этой области что-то не так, и это говорит мне, что у еды нет атрибута image

class Food(pygame.sprite.Sprite):
    def __init__(self,x,y,color):
        pygame.sprite.Sprite.__init__(self)

        pygame.image = pygame.Surface([7,7])
        self.image.fill(color)

        self.rect = self.image.get_rect()
        self.rect.top = y
        self.rect.left = x
    def update (self,player):
        collidePlayer = pygame.sprite.spritecollide(self,player,False)
        if collidePlayer:
            food.remove

person user1615699    schedule 22.08.2012    source источник
comment
Я нигде не вижу сообщения об ошибке.   -  person Joel Cornett    schedule 22.08.2012


Ответы (1)


Удалив все ненужные биты, вы видите разницу между методами __init__ следующих подклассов Sprite?

class Wall(pygame.sprite.Sprite): 

    def __init__(self,x,y,width,height, color):#For when the walls are set up later
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.Surface([width, height]) # <-------------
        self.image.fill(color)

class player(pygame.sprite.Sprite):

    def __init__ (self,x,y):

        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.Surface([13,13])  # <-------------
        self.image.fill(white) 

class Food(pygame.sprite.Sprite)
    def __init__(self,x,y,color):
        pygame.sprite.Sprite.__init__(self)

        pygame.image = pygame.Surface([7,7])  # <----- this one is different!
        self.image.fill(color)

Причина, по которой вы получаете сообщение об ошибке, говорящее о том, что self не имеет атрибута image, заключается в том, что вы не установили self.image, вы сохранили изображение в самом модуле pygame.

PS: линии, которые выглядят как

        food.remove

кажутся мне подозрительными. Если remove это метод, то он будет вызван food.remove(), а food.remove ничего не сделает.

person DSM    schedule 22.08.2012
comment
Спасибо, я попробую это. Да, я почти уверен, что это должна быть food.remove(), но у меня не было времени проверить это, но большое спасибо за это. - person user1615699; 23.08.2012