爆炸效果
我们给子弹击中敌舰增加一下爆炸效果。首先,我们把爆炸图片添加到assets里。修改enemy.py文件:
1)在init方法里增加down_image_arr
属性:
self.down_image_arr = (pygame.image.load('../assets/enemy1_down1.png'),
pygame.image.load('../assets/enemy1_down2.png'),
pygame.image.load('../assets/enemy1_down3.png'),
pygame.image.load('../assets/enemy1_down4.png'))
2)修改update方法:
def update(self):
if self.is_survive():
self.rect.y += self.speed
score_surface = self.sys_font.render('life:' + str(self.life), False, RED)
self.image.blit(score_surface, (10, 0))
else:
if self.downIndex > 3:
self.kill()
else:
self.image.blit(self.down_image_arr[self.downIndex], self.down_image_arr[self.downIndex].get_rect())
self.downIndex += 1
在main.py的游戏主循环里的判断子弹是否击中敌舰中,我们判断敌舰是否存活。只有存活的子弹需要检测碰撞:if enemy.is_survive():
。
此时游戏效果如下:
plane爆炸的效果和敌舰类似,小朋友们可以自己实现哈。
游戏声音
到这里,我们的游戏画面部分就完成了。接下来,我们给游戏添加声音。
我们首先把音乐导入到项目的assets/sound中。在constant.py中将这些音乐初始化进来:
pygame.init() # 游戏初始化
pygame.mixer.init() # 混音器初始化
# 游戏背景音乐
pygame.mixer.music.load('../assets/sound/game_music.wav')
pygame.mixer.music.set_volume(0.2)
# 子弹发射音乐
bullet_sound = pygame.mixer.Sound("../assets/sound/bullet.wav")
bullet_sound.set_volume(0.2)
# 我方飞机挂了的音乐
me_down_sound = pygame.mixer.Sound("../assets/sound/game_over.wav")
me_down_sound.set_volume(0.2)
# 敌方飞机挂了的音乐
enemy1_down_sound = pygame.mixer.Sound("../assets/sound/enemy1_down.wav")
enemy1_down_sound.set_volume(0.2)
-
加载游戏背景音乐
在main.py中,我们播放背景音乐:pygame.mixer.music.play(-1)
-
发射子弹
在bullet.py中的new_bullet方法中,我们播放子弹发射方法。bullet_sound.play()
-
击中敌舰
在enemy.py中的update方法中,我们播放敌舰被击中的方法。
# 敌舰炸毁图片第一帧
if self.downIndex == 0:
enemy1_down_sound.play()
-
飞机坠毁
我们在main.py里增加我方飞机坠毁的声音:game_over_sound.play()
项目待补充点
到此为止,项目的主题功能就完成了。其实,一个好的游戏是可以不断完善的。就像我们的项目,也有很多待完善的点:
-
我放飞机爆炸效果
-
吃高级子弹
-
加高级敌舰
此外,我们项目里还有一些待修复的bug,你发现了吗?我们来一起找找 -
敌方飞机有可能出不来
-
game_over音乐播放不出来
-
如果没有击落一屏的4架敌舰,后续敌舰就不出来了
这些隐藏的bug就靠小朋友们来修复啦,加油!
发布游戏
现在,这个游戏可以在我们自己的电脑上运行了,那怎么在别人的电脑上运行呢?这就要用到发布了。游戏发布,就是把我们写好的代码打包好分发给别人的过程。python的代码发布需要用到pyinstaller,详细的pyinstaller介绍可以看这篇文章:pyinstaller简洁教程 | Legendtkl,这块内容后续会讲解。
网友评论