Я пытаюсь создать игру 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
Ответ 1 · рейтинг 1 · DSM
Удалив все ненужные биты, вы видите разницу между методами __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 ничего не сделает.