Python製作經典坦克大戰小遊戲

2021-10-11 14:45:15 字數 2413 閱讀 5477

python版本:3.6.4

pygame模組;

以及一些python自帶的模組。

安裝python並新增到環境變數,pip安裝需要的相關模組即可。

t_t感覺自己的**整體上邏輯還是很清晰的,也做了很多必要的注釋,所以這裡我只講主要的思路,一些實現細節請閱讀我的源**。

遊戲規則:

遊戲有單人和雙人兩種模式,己方大本營被破或者己方坦克被殲滅則遊戲失敗,成功通過所有關卡則遊戲勝利。另外,玩家可以通過射擊特定的坦克使地圖上隨機出現乙個道具,若己方坦克撿到該道具,則觸發乙個事件,例如坦克能力的增強。

玩家操作方式如下:

玩家一:

wsad鍵:上下左右;

空格鍵:射擊。

玩家二:

↑↓←→鍵:上下左右;

小鍵盤0鍵:射擊。

逐步實現:

step1:定義精靈類

因為遊戲肯定涉及到碰撞檢測,所以我們需要定義一些精靈類。

首先,既然是坦克大戰,總得有坦克吧?

己方坦克:

上面的**定義了坦克的一些屬性,例如速度、等級、是否處於受保護狀態等等。

當然這裡也例項化了乙個子彈類,這個我們之後再定義,先假裝有這個子彈類,這樣主邏輯才是完整的,不然坦克沒有子彈類怎麼射擊呢?

當然,有屬性還是不夠的,我們還要賦予坦克一些能力,例如上面所說的射擊:

當然還有上下左右的移動,因為都是類似的,這裡只給出向上移動的原始碼:

啊,還有坦克的等級提公升與下降:

最後當然是坦克死後重置啦:

敵方坦克:

敵方坦克和己方坦克定義的源**很相似,只不過移動是隨機的,死後是不可復生的,就不截圖了t_t。

現在,我們可以來定義子彈類了!

子彈類:

子彈類應當具有例如速度、強度等屬性,以及選擇方向和移動的能力:

最後,我們來定義其他涉及到碰撞檢測的物體類。

大本營:

有正常和被摧毀兩種狀態:

地圖障礙物:

包括磚牆、鋼牆、森林、河流和冰:

食物道具:

一共有7種道具,不同的道具對應不同的效果:

step2:設計遊戲地圖

emmmm,遊戲的大背景是黑色的,然後在上面堆上一些步驟一中定義的障礙物就可以完成地圖設計了。其中,鋼牆不能被一般的子彈擊破,磚牆可被任意子彈擊破,除牆外,坦克可以穿過任意障礙物,不過沒有任何附加效果(有興趣的小夥伴可以自己擴充套件一下~比如冰上的坦克速度加快等等):

這邊只設計了乙個地圖和兩個關卡,有興趣的小夥伴可以在此基礎上設計更多的地圖和關卡。

step3:實現遊戲主迴圈

主迴圈的**比較長,不過邏輯很清晰。首先展示遊戲開始介面,玩家在此介面選擇遊戲模式後進入遊戲;在遊戲中,需要進行一系列的碰撞檢測以及觸發碰撞產生的一系列事件,並繪製當前存在的所有物體;最後,若遊戲失敗,則顯示遊戲失敗介面,若通關,則顯示遊戲成功介面

all done!

經典坦克大戰再現(二)

不好意思我承認我鴿了一天,這一切都是因為我這不爭氣的眼鏡,它該換眼鏡了。昨天調了快一下午的 就是因為獲取的時候路徑裡面少敲了個s導致自己沒查出來光在邏輯 裡面找錯誤,鑽進了牛角尖就再沒出來 看著這紅色的報錯,我心態崩了啊 就當我想要重寫時,突然意識看到左側的專案欄就想到路徑是不是對的,這一查都人都傻...

簡易雙人坦克大戰製作流程(一)

1 首先新建乙個project 2 匯入我們的預備好的材質包 3 將我們預製件 prefab 中的leveart地形放入hierarchy 4 因為我們地形包裡已經有了dirctional light所以可以把它自帶的dirctional light刪除,之後我們匯入models中的tank並為其新...

Python入門經典練習題之坦克大戰(簡化版)

coding utf 8 author keen created on 2019 5 18 e mail keen2020 outlook.com import random class basetank object 類屬性,定義初始值 def init self self.live 1 self...