不知道大家平時有沒有玩過飛機大戰的遊戲,從這節課開始,我們就來實現一個飛機大戰的遊戲,具體要求如下:
遊戲的基本設定:
敵方共有大中小3款飛機,分為高中低三種速度;
子彈的射程並非全屏,而大概是屏幕長度的80%;
消滅小飛機需要1 發子彈,中飛機需要8 發,大飛機需要20 發子彈;
每消滅一架小飛機得1000分,中飛機6000分,大飛機10000分;
每個30秒有一個隨機的道具補給,分為兩種道具,全屏炸彈和雙倍子彈;
全屏炸彈最多只能存放3 枚,雙倍子彈可以維持18 秒鐘的效果;
遊戲將根據分數來逐步提高難度,難度的提高表現為飛機數量的增多以及速度的加快;
為中飛機和大飛機增加了血槽的顯示,這樣我們可以直觀的知道敵機快被消滅了沒有;
我方有三次機會,每次被敵人消滅,新誕生的飛機會有3 秒鐘的安全期;
遊戲結束後會顯示歷史最高分數。
現在我們就來從無到有,從簡單到復雜一起來打造這個遊戲吧。
首先,我們把可以獨立分開的代碼獨立為一個一個的模塊,如圖所示:
main.py:就是主程序;
bullet.py:就是子彈,子彈有兩種,單發和雙發;
enemy.py:就是敵機,共有大中小三種,並且都有不同的屬性;
myplane.py:就是我的飛機;
supply.py:就是補給和裝備;
record.txt:保存的最高分;
三個文件夾就是需要的素材。
現在我們就開始寫代碼了:
首先是我們的main 模塊:
-
-
-
-
-
from pygame.locals import *
-
-
-
-
-
bg_size = width, height = 480, 700
-
screen = pygame.display.set_mode(bg_size)
-
pygame.display.set_caption("飞机大战 -- Python Demo")
-
-
background = pygame.image.load("images/background.png").convert()
-
-
-
pygame.mixer.music.load("sound/game_music.ogg")
-
pygame.mixer.music.set_volume(0.2)
-
bullet_sound = pygame.mixer.Sound("sound/bullet.wav")
-
bullet_sound.set_volume(0.2)
-
bomb_sound = pygame.mixer.Sound("sound/use_bomb.wav")
-
bomb_sound.set_volume(0.2)
-
supply_sound = pygame.mixer.Sound("sound/supply.wav")
-
supply_sound.set_volume(0.2)
-
get_bomb_sound = pygame.mixer.Sound("sound/get_bomb.wav")
-
get_bomb_sound.set_volume(0.2)
-
get_bullet_sound = pygame.mixer.Sound("sound/get_bullet.wav")
-
get_bullet_sound.set_volume(0.2)
-
upgrade_sound = pygame.mixer.Sound("sound/upgrade.wav")
-
upgrade_sound.set_volume(0.2)
-
enemy3_fly_sound = pygame.mixer.Sound("sound/enemy3_flying.wav")
-
enemy3_fly_sound.set_volume(0.2)
-
enemy1_down_sound = pygame.mixer.Sound("sound/enemy1_down.wav")
-
enemy1_down_sound.set_volume(0.2)
-
enemy2_down_sound = pygame.mixer.Sound("sound/enemy2_down.wav")
-
enemy2_down_sound.set_volume(0.2)
-
enemy3_down_sound = pygame.mixer.Sound("sound/enemy3_down.wav")
-
enemy3_down_sound.set_volume(0.5)
-
me_down_sound = pygame.mixer.Sound("sound/me_down.wav")
-
me_down_sound.set_volume(0.2)
-
-
-
pygame.mixer.music.play(-1)
-
-
clock = pygame.time.Clock()
-
-
-
-
-
for event in pygame.event.get():
-
-
-
-
-
screen.blit(background, (0, 0))
-
-
-
-
-
-
if __name__ == "__main__":
-
-
-
-
-
-
-
-
-
-

至此,我們遊戲的背景和背景音樂就實現了。
大家可以先嘗試著實現一下其它的功能,在這個過程中,你一定會遇到很多的問題,但是在解決這些問題的過程中,你必定會學習到更多的知識。
0 留言:
發佈留言