python及pygame雷霆战机游戏项目实战13 子弹增强

项目详细介绍

项目详细介绍

在这个系列中,将制作一个雷霆战机游戏。

GIF.gif

火力加强

创建了一个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秒)。

image.png

下一次,将通过添加“游戏结束”屏幕来完成游戏。

项目源码及资源

获取地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容