Я не могу понять эту проблему. У меня есть Player
объект и некоторые Enemy
объекты, которые оба наследуются от класса Actor
. И Player
, и Enemy
имеют shoot(self)
методы, которые заставляют их стрелять пулями. Предполагается, что эта пуля будет добавлена в соответствующий список снарядов, но когда программа вызывает self.projectiles.append(Projectile())
для врага, она добавляет его в список снарядов игрока.
Я запустил программу, где только актер, стреляющий в любые пули, был врагами, и я наблюдаю, как len(player.projectiles)
возвращает все большие и большие значения, даже если он не должен расти. Любая помощь приветствуется. Этот блок запускается каждый раз, когда программа обновляется, проходит список врагов объекта Game
и обновляет каждого из них соответственно:
for enemy in self.enemies:
enemy.update(self.player)
Вот класс Enemy
:
class Enemy(Actor):
def shoot(self):
image = pygame.transform.rotate(ProjectileImage, self.angle)
self.projectiles.append(Projectile(self.getCenter()[0] - 6, self.getCenter()[1] - 16, 12, 32, image, 5, self.angle, True))
shootingSound.play()
def tryToShoot(self):
if self.attackCoolDown >= 30:
self.attackCoolDown = 0
self.shoot()
def update(self, player):
self.pointTowards(player.x, player.y)
Actor.update(self)
self.tryToShoot()
Класс Actor
инициализирует projectiles
:
class Actor(Entity):
projectiles = []