[
## 爆炸效果
我們給子彈擊中敵艦增加一下爆炸效果。首先,我們把爆炸圖片添加到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)
```
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射擊游戲(五)