[
## 爆炸效果
我们给子弹击中敌舰增加一下爆炸效果。首先,我们把爆炸图片添加到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():`。
此时游戏效果如下:
![](https://adatech-1256165843.cos.ap-chengdu.myqcloud.com/20181024083632.png)
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)
```
1. 加载游戏背景音乐
在main.py中,我们播放背景音乐:`pygame.mixer.music.play(-1)`
2. 发射子弹
在bullet.py中的new_bullet方法中,我们播放子弹发射方法。`bullet_sound.play()`
3. 击中敌舰
在enemy.py中的update方法中,我们播放敌舰被击中的方法。
```
# 敌舰炸毁图片第一帧
if self.downIndex == 0:
enemy1_down_sound.play()
```
4. 飞机坠毁
我们在main.py里增加我方飞机坠毁的声音:`game_over_sound.play()`
## 项目待补充点
到此为止,项目的主题功能就完成了。其实,一个好的游戏是可以不断完善的。就像我们的项目,也有很多待完善的点:
1. 我放飞机爆炸效果
2. 吃高级子弹
3. 加高级敌舰
此外,我们项目里还有一些待修复的bug,你发现了吗?我们来一起找找
1. 敌方飞机有可能出不来
2. game_over音乐播放不出来
3. 如果没有击落一屏的4架敌舰,后续敌舰就不出来了
这些隐藏的bug就靠小朋友们来修复啦,加油!
## 发布游戏
现在,这个游戏可以在我们自己的电脑上运行了,那怎么在别人的电脑上运行呢?这就要用到发布了。游戏发布,就是把我们写好的代码打包好分发给别人的过程。python的代码发布需要用到pyinstaller,详细的pyinstaller介绍可以看这篇文章:[pyinstaller简洁教程 | Legendtkl](http://legendtkl.com/2015/11/06/pyinstaller/),这块内容后续会讲解。
]()
- 课程介绍
- 搭建环境
- 什么是计算机
- 程序是怎么运行的
- 安装python
- 项目实例-安装IDE
- 变量和简单数据类型
- 数据&变量
- 数字
- 字符串
- 布尔类型
- 项目实例
- 容器-列表
- 容器
- 列表
- 项目实例
- 容器-字典
- 定义字典
- 项目实例
- 数据类型总结
- 条件语句
- python条件语句
- 项目实例
- 循环语句
- for循环
- while循环
- 项目实例
- 函数
- 5.0函数定义
- 5.2函数实战
- 6.文件系统
- 6.1 文件系统介绍&python查找文件
- 6.2 用python读写文件
- 7. python操作时间
- 8.面向对象
- 8.1 类和对象
- 8.2 继承和重写
- 8.3 面向对象项目实战
- 9 GUI编程
- 9.1 GUI基础
- 9.2 备忘清单GUI版
- 10.网络
- 10.1 网络的发展
- 10.2 python http
- 11.web开发
- 11.1 web基础&HTML
- 11.2 CSS&JavaScript
- 11.3 网页计算器
- 11.3 网站开发实战-播客搭建
- 11.3 python-web
- 12. 项目实战-数据处理
- 13. 项目实战-AI入门
- 13.1 环境搭建
- 心得
- 13.2 Tensorflow的瓜怎么吃
- 14 pygame
- 14.1 pygame Helloworld
- 14.4 pygame 动画基础 Animation
- 从0开始学python第14.5节 pygame 加载图片和声音
- 从0开始学python第14.6节 pygame.sprite(上)
- 14.7 pygame.sprite模块(下)
- 14.8 pygame射击游戏(一)
- pygame射击游戏(二)
- 14.8 pygame射击游戏(三)
- 14.8 pygame射击游戏(四)
- 14.8 pygame射击游戏(五)