pygame飞机大战开发实录12

博客讲述游戏程序开发,包括玩家与敌机子弹修改、奖励飞机改成降落伞包及奖品调整、BOSS特征优化等。完成程序开发后,还需进行游戏内容调试。此外,开发中因布局麻烦制作了布局助手,可预览效果,有需要可私信索取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一 篇讲解了 showText EnemyPlane EnemyBullet HeroPlane四个类的修改,本篇继续讲解其他类的修改。


一、Bullet玩家飞机子弹,和敌机子弹差不多,添加了花式子弹

class Bullet(BaseBullet): #玩家飞机子弹
    group = []
    def __init__(self, pygame_screen,postion,movingpath):
        Base.__init__(self, pygame_screen, postion, Image_HeroBullet)
        self.movingPath = movingpath
        if self.movingPath == "Lline" or self.movingPath == "Rline":
            self.image = pygame.transform.rotate(self.image, - 90)
            self.w, self.h = self.image.get_size()
        elif self.movingPath == "Lbiasline":
            self.image = pygame.transform.rotate(self.image, 25)
            self.w, self.h = self.image.get_size()
        elif self.movingPath == "Rbiasline":
            self.image = pygame.transform.rotate(self.image, - 25)
            self.w, self.h = self.image.get_size()
        Bullet.group.append(self)
    def move(self):
        if self.movingPath == "line":
           self.y -= 10
        elif self.movingPath == "Lbiasline":
            self.y -= 10
            self.x -= 3
        elif self.movingPath == "Rbiasline":
            self.y -= 10
            self.x += 3
        elif self.movingPath == "Rline":
            self.x += 18
        elif self.movingPath == "Lline":
            self.x -= 18

二、BasePlane 类的 bulletCoolDown方法做了一个修改,可以比对一下之前的版本。

在这里插入图片描述
三、RewardPlane把奖励飞机改成降落伞包,击落刷新奖品。
在这里插入图片描述

class RewardPlane(BasePlane):
    group = []
    def __init__(self, pygame_screen,Rewarditem):
        # 4种补给包,
        if Rewarditem == 'bullets':
            image_name = Image_RewardPlane1
        elif Rewarditem == 'bombs':
            image_name = Image_RewardPlane2
        elif Rewarditem == 'miniplane':
            image_name = Image_RewardPlane3
        elif Rewarditem == 'reduction':
            image_name = Image_RewardPlane4

        BasePlane.__init__(self, pygame_screen, (60, 240), image_name, 2)
        self.health = 50
        self.maxHealth = 50
        self.score = 5000
        self.reward = Rewarditem

        self.__crate_images()
        RewardPlane.group.append(self)
    def __crate_images(self):
        for i in range(3,5):
            self.bombList.append(pygame.image.load("./res/enemy0_down" + str(i) + ".png"))

    def move(self):
        pass
    def fire(self):
        pass

RewardGoods奖品也做相应的修改

class RewardGoods(Base):
    group = []
    def __init__(self, pygame_screen, postion,RewardItem):
        if RewardItem == 'bullets':
            image_name = Image_Reward1
        elif RewardItem == 'bombs':
            image_name = Image_Reward2
        elif RewardItem == 'miniplane':
            image_name = Image_Reward3
        elif RewardItem == 'reduction':
            image_name = Image_Reward4
        Base.__init__(self, pygame_screen, postion, image_name)
        self.RewardItem = RewardItem
        RewardGoods.group.append(self)
    def move(self):
        self.y += 1
    def display(self):
        self.screen.blit(self.image, (self.x, self.y))

四、BossPlane类的修改也很多,这里也不发出了,请查看源码。
之前的boss特征不明显,就是血多了一点,图片大一点。修改之后:
1、有登场效果,慢慢的出现配合音效。
2、周期刷新侍从飞机,不会孤零零的一个BOSS。
在这里插入图片描述
3、添加了周期性切换的多种花式子弹。

4、新增BOSS数据信息显示
在这里插入图片描述


至此游戏程序已经完成,剩下的工作就是游戏内容的调试,比如:敌机的刷新周期、花式子弹路径设计、补给效果设计


开发过程中,布局位置比较麻烦,我做了一个布局助手,可以预览布局效果。有需要的可以私信联系我索取

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值