项目详细介绍
在这个系列中,将制作一个雷霆战机游戏。
火力加强
创建了一个Pow精灵,当敌机被摧毁时会从流星中随机掉落奖励道具。完成了加血工作,现在需要对'gun'类型做同样的事情。
火力加强的效果为:玩家发射出更多的子弹,定义一个新的Player方法powerup,并在获得'gun'类型道具奖励时调用它:
if hit.type == 'gun':
player.powerup()
为了使这个工作,首先让为Player精灵添加一些新的属性:self.power (每获得一个子弹增强道具,使其加1),power_time以便可以在经过一定时间后退回(减1):
self.power = 1
self.power_time = pygame.time.get_ticks()
powerup方法将设置这些属性:
def powerup(self):
self.power += 1
self.power_time = pygame.time.get_ticks()
现在可以改变shoot方法,当power大于1 时产生2个子弹。将在两翼产生它们。
def shoot(self):
now = pygame.time.get_ticks()
if now - self.last_shot > self.shoot_delay:
self.last_shot = now
if self.power == 1:
bullet = Bullet(self.rect.centerx, self.rect.top)
all_sprites.add(bullet)
bullets.add(bullet)
shoot_sound.play()
if self.power >= 2:
bullet1 = Bullet(self.rect.left, self.rect.centery)
bullet2 = Bullet(self.rect.right, self.rect.centery)
all_sprites.add(bullet1)
all_sprites.add(bullet2)
bullets.add(bullet1)
bullets.add(bullet2)
shoot_sound.play()
最后,power_time时间过去后,减少 self.power的值:
# timeout for powerups
if self.power >= 2 and pygame.time.get_ticks() - self.power_time > POWERUP_TIME:
self.power -= 1
self.power_time = pygame.time.get_ticks()
不要忘记POWERUP_TIME在顶部设置为5000(5秒)。
下一次,将通过添加“游戏结束”屏幕来完成游戏。