上一 篇讲解了
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数据信息显示
至此游戏程序已经完成,剩下的工作就是游戏内容的调试,比如:敌机的刷新周期、花式子弹路径设计、补给效果设计