少儿编程之使用PyGame编写游戏(15):太空大撞击 增加能量道具 (续)

增强玩家射击威力

在上一篇教程中,我们创建了一个 Powerup 精灵,当Mob被摧毁时,它会从Mob中随机掉落。 我们完成了“盾牌”类型的增加能量工作,现在我们需要对“枪”做同样的事情。

我们可以选择很多东西来影响枪的增强效果:射速、伤害(虽然现在我们一击就能摧毁流星)、枪的类型等。在本课中,我们将让玩家 发射更多子弹,但为了让我们以后可以灵活地更改它,我们将定义一个新的 Player 方法,并在我们增强“枪”的威力时调用它:

  1. if hit.type == 'gun':
  2. player.powerup()

为了使这个设置生效,首先让我们为 玩家精灵 添加一些新属性:

  • power 跟踪“功率级别”是什么(每个 pow 可以将其提高一个)
  • power_time 我们可以在一定数量时间之后恢复设置
  1. self.power = 1
  2. self.power_time = pygame.time.get_ticks()

在powerup 方法中设置这些属性:

  1. def powerup(self):
  2. self.power += 1
  3. self.power_time = pygame.time.get_ticks()

现在我们可以改变射击方式,在威力大于 1 时产生 2 发子弹。我们会让它们在翼尖生成发射(原来是在机头部分生成1发子弹):

  1. def shoot(self):
  2. now = pygame.time.get_ticks()
  3. if now - self.last_shot > self.shoot_delay:
  4. self.last_shot = now
  5. if self.power == 1:
  6. bullet = Bullet(self.rect.centerx, self.rect.top)
  7. all_sprites.add(bullet)
  8. bullets.add(bullet)
  9. shoot_sound.play()
  10. if self.power >= 2:
  11. bullet1 = Bullet(self.rect.left, self.rect.centery)
  12. bullet2 = Bullet(self.rect.right, self.rect.centery)
  13. all_sprites.add(bullet1)
  14. all_sprites.add(bullet2)
  15. bullets.add(bullet1)
  16. bullets.add(bullet2)
  17. shoot_sound.play()

最后,我们需要通过将其添加到玩家对象的update中来检查 power_time:

  1. # timeout for powerups
  2. if self.power >= 2 and pygame.time.get_ticks() - self.power_time > POWERUP_TIME:
  3. self.power -= 1
  4. self.power_time = pygame.time.get_ticks()

不要忘记在程序顶部将 POWERUP_TIME 设置为 5000(5 秒)。

增加能量音效

在增加能量/增添威力功能后,我们在拾取物品(盾牌或者给枪增加威力)时播放一些好听的声音。 在这里将这个功能留给读者自己来完善。 使用“bfxr”找到你喜欢的两个声音,并像我们处理其他声音一样加载它们,将它们命名为 shield_sound 和 power_sound。 然后,只在对应的 pow 类型碰撞时播放每个声音。 您可以在下面看到完整的游戏代码,但请在查看代码之前先自行尝试完成这项工作。

下一次,我们将通过添加“游戏结束”屏幕来结束这系列游戏教程。
完整代码请点此查看

微信扫一扫,分享此文章

少儿编程教学平台

联系我们

微信

aguibo002

邮箱

haoxuehaojiao在163.com

Loading
我们已经收到您的信息,将尽快联系您!