【发布时间】:2022-11-13 17:02:43
【问题描述】:
我正在写一个小游戏。我想从同一个类创建两个对象并将它们组合成一个组。但是在创建第二个对象时,出现错误“AttributeError: 'Enemy' object has no attribute 'get_rect'”
这是与问题相关的代码
class Enemy(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = enemy
self.rect = self.image.get_rect()
self.rect.center = (200, 200)
self.speedx = random.randint(1, 10)
self.speedy = random.randint(1, 10)
self.collis = 0
self.enemy_health = 5
self.enemy_rect = pygame.rect.Rect((self.rect.x + 35, self.rect.y + 20), (35, 15))
self.skin = 0
self.skin_index = 0
self.skins = [enemy, enemy_1, enemy_2]
self.left_skins = [pygame.transform.flip(self.skins[0], True, False),
pygame.transform.flip(self.skins[1], True, False),
pygame.transform.flip(self.skins[2], True, False)]
self.move_enemy = 1
def update(self, collis):
self.enemy_rect = pygame.rect.Rect((self.rect.x + 35, self.rect.y + 20), (35, 15))
if self.move_enemy == 1:
if self.collis < 1:
self.speedx = random.randint(1, 2)
self.speedy = random.randint(1, 2)
if player.player_x_pos > self.rect.x:
self.rect.x += self.speedx
self.skin += 1
if self.skin % 10 == 0:
self.skin_index += 1
if self.skin_index > 2:
self.skin_index = 0
self.image = self.skins[self.skin_index]
if player.player_y_pos + 50 > self.rect.y:
self.rect.y += self.speedy
self.skin += 1
if self.skin % 10 == 0:
self.skin_index += 1
if self.skin_index > 2:
self.skin_index = 0
self.image = self.skins[self.skin_index]
if player.player_x_pos < self.rect.x:
self.rect.x -= self.speedx
self.skin += 1
if self.skin % 10 == 0:
self.skin_index += 1
if self.skin_index > 2:
self.skin_index = 0
self.image = self.left_skins[self.skin_index]
if player.player_y_pos + 50 < self.rect.y:
self.rect.y -= self.speedy
self.skin += 1
if self.skin % 10 == 0:
self.skin_index += 1
if self.skin_index > 2:
self.skin_index = 0
if player.player_x_pos < self.rect.x:
self.image = self.left_skins[self.skin_index]
else:
self.image = self.skins[self.skin_index]
else:
self.collis = 0
# if self.enemy_health <= 0:
# del enemy
print('Health:', self.enemy_health)
if self.move_enemy == 2:
if self.rect.y <= 550:
self.rect.y += 2
else:
self.rect.y -= 2
enemy = Enemy()
enemy2 = Enemy()
enemy2.rect.center = (100, 100)
scene_1_sprites.add(enemy2)
scene_1_sprites.add(enemy)
但是该类具有必要的属性
我试图像这样创建第二个对象: 敌人2 = 敌人
但最终只有一个对象
【问题讨论】:
-
欢迎来到堆栈溢出。 “但是类有必要的属性” 用你自己的话来说,你认为这是为什么?你认为这个价值来自哪里?您使它具有该属性的代码在哪里?
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
标签: python class pygame attributes