スタディングテックのQ&A

ミッション4です。残機表記は出来ましたが、1機しか表示できま…

スタディング受講者
質問日:2024年12月12日
ミッション4です。残機表記は出来ましたが、1機しか表示できません。また、1発当たっただけで、ゲームオーバーになります。

def reset(self):
self.allSprites = sprite.Group()
self.playerGroup = sprite.Group()
self.life1 = game_object.Life(650,0, IMAGES['ship'])
self.life2 = game_object.Life(700,0, IMAGES['ship'])
self.life3 = game_object.Life(750,0, IMAGES['ship'])
self.shipLasers = sprite.Group()

def check_collisions(self):
          ・
             ・
self.sounds['enemykilled'].play()
if len(self.enemies) == 0:
self.create_game_clear()
for s in sprite.groupcollide(self.playerGroup, self.enemyLasers, True, True).keys():
self.sounds['shipbreak'].play()
if self.life3.alive():
self.life3.kill()
self.create_new_ship()
if self.life2.alive():
self.life2.kill()
self.create_new_ship()
if self.life1.alive():
self.life1.kill()
self.create_game_over()
for s in sprite.groupcollide(self.enemyLasers, self.blockers, True, True).keys():
pass

class Life(sprite.Sprite):
def __init__(self, xpos, ypos, img):
sprite.Sprite.__init__(self)
self.image = transform.scale(img,(23, 27))
self.rect = self.image.get_rect(topleft=(xpos, ypos))
self.allSprites.add(self.player)

def update(self, screen, keys):
screen.blit(self.image, self.rect)

衝突判定関数内のlifeの順番を変えてみましたが、今度はレーザが当たると、新しい宇宙船が延々と出現します。

 
if self.life1.alive():
self.life1.kill()
self.create_new_ship()
if self.life2.alive():
self.life2.kill()
self.create_new_ship()
if self.life3.alive():
self.life3.kill()
self.create_game_over()

参考になった 0
閲覧 3

回答

スタディングテックKAMAKEスタッフ 講師
公式
回答日:2024年12月12日
回答を見たり、質問するには
対象のコースを購入する必要があります。