私はこの問題を理解できません。クラスから継承する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 = []
投稿されたコードは、インスタンス属性ではなく、クラス属性projectiles
として表示されます。したがって、すべてが1つのリストを共有します。個別のリストを作成するには、メソッド内の属性を初期化します。Actor
projectiles
__init__
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加