私は現在、2人のプレイヤー向けのターンベースの戦略ゲームであるテーブルウォーズと呼ばれるゲームに取り組んでいます。私が産卵するユニットに問題が発生するまで、進歩はスムーズに進んでいます。複数の同じスプライトを生成する
プログラムは同じユニットを複数生成したり、古いユニットを死滅させた後に新しいユニットを再生成したりしません。ここ
を助けるかもしれないいくつかの情報がある:
- 各クラスは、変数に格納されている:(
redI = Red_Infantry()
) - すべての機能をメインループに格納されています。
- スプライトクラスには、ユニットを生成する際に使用されるX値とY値がハードコードされています。
どうすればよいですか?
要求されたとして、ここでは赤歩兵のためのクラスがある:
class Red_Infantry(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image, self.rect = load_image('Soldier_red.png', -1)
self.selected = 0
self.area = screen.get_rect()
self.rect.topleft = (100, 300)
self.health = 100 #Soldiers are have mediocre toughness.
self.attack_damage = 25
self.range_maximum = 20 #in pixels, this is melee range
self.range_minimum = 0
self.update()
def update(self):
if self.health <= 0:
self.kill()
と本機を起動するためのコード:
if spawned_units < 3 and PHASE == 1 and TURN == 'Red':
if REDGOLD < 10:
print "Out of money! Moving to Phase 2!"
PHASE = 2
spawned_units = 0
elif event.type == KEYDOWN and event.key == K_1:
if REDGOLD >= 10 and REDCOMMAND >= 5:
Sprites.append(redI)
REDGOLD -= 10
REDCOMMAND -= 5
spawned_units = spawned_units + 1
else:
print "Not enough gold!"
これは、すべてのユニットと同様のスタイルです。最初は正しく実行されますが、2番目、3番目などでは実行されません。つまり、1つの兵士しか持てないということです。また、その兵士がself.killで死亡した場合、私がそれを生成しようとすると元に戻りません。
。クラス定義と新しいインスタンスの作成方法の例を(少なくとも)提供してください。作られたrobots.jpgの編集@ –
、 'sprites.append(Red_Infantry())'と呼ばれると、他の機能は 'まだ使用可能redI'、または私はこれと互換性があるように私のコードを手直しする必要があります使用しますこれは – Oventoaster