我是 python 新手。我正在制作一個帶有 2D 僵尸的小游戲,但運行代碼時顯示錯誤。我搜索并嘗試了一切,但沒有任何效果。這是主要代碼的一部分:
for shuriken in game.player.all_projectile:
shuriken.move()
這是game.py代碼的一部分:
class Game:
def __init__(self):
self.all_monster = pygame.sprite.Group()
self.all_player = pygame.sprite.Group()
self.player = Player(self)
self.all_player.add(self.player)
def check_collision(self, sprite, group):
return pygame.sprite.spritecollide(sprite, group, False)
這是projectile.py的代碼(錯誤報告該代碼的最后一行):
class Shuriken(pygame.sprite.Sprite):
def __init__(self, player, velocity, x):
super().__init__()
self.player = player
self.velocity = velocity
self.image = pygame.image.load('assets/shuriken.png')
self.image = pygame.transform.scale(self.image, (40, 40))
self.rect = self.image.get_rect()
self.rect.x = player.rect.x x
self.rect.y = player.rect.y 30
self.velo_adaptation = self.rect.x
self.origin_image = self.image
self.angle = 1
def rotate(self):
self.angle = -5
self.image = pygame.transform.rotozoom(self.origin_image, self.angle, 1)
self.rect = self.image.get_rect(center=self.rect.center)
def delete(self):
self.player.all_projectile.remove()
def move(self):
self.rect.x = self.velo_adaptation
self.velo_adaptation = self.velocity
self.rotate()
for zombie in self.player.game.check_collision(self, self.player.game.all_monster):
self.delete()
zombie.damage(self.player.attack)
if self.rect.x > 1080:
self.delete()
(Edit)And here is the zombie class:
類僵尸(pygame.sprite.Sprite):
def __init__(self, game):
super().__init__()
self.health = 100
self.game = game
self.max_health = 100
self.damage = 5
self.image = pygame.image.load('assets/zombie.png')
self.image = pygame.transform.scale(self.image, (150, 150))
self.rect = self.image.get_rect()
self.rect.x = 950
self.rect.y = 550
self.velocity = 0.2
def damage(self, attack):
self.health -= attack
self.update_health_bar()
def update_health_bar(self, surface):
bar_color = (113, 206, 45)
bar_position = [self.rect.x 30, self.rect.y -10, self.health, 5]
pygame.draw.rect(surface, bar_color, bar_position)
def forward(self):
if not self.game.check_collision(self, self.game.all_player):
uj5u.com熱心網友回復:
class Zombie(pygame.sprite.Sprite):
def __init__(self, game):
...
self.damage = 5
def damage(self, attack):
...
該類的屬性Zombie定義存在沖突。damage它不能既是整數又是函式。重命名其中之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/469357.html
標籤:Python python-3.x
上一篇:使用cp功能復制節點中的檔案夾
下一篇:如何為相鄰列中不同的紅色值著色?
