GitHub又放大招,Python版本的植物大戰殭屍還能作弊玩!

《植物大戰殭屍》遊戲它是一款極富策略性的小遊戲,集成了即時戰略、塔防禦戰和卡片收集等要素,玩家控制植物抵禦殭屍的進攻,保護這片植物園。記得小編剛工作的時候抱着IPAD經常玩到深夜。

最近在逛 Github 發現了一個用純 Python 打造的《植物大戰殭屍》,用鼠標收集陽光,選擇植物卡片並播種植物,原汁原味,滿滿的回憶,目前該項目僅僅支持冒險模式。

01

安裝並運行

1).下載項目代碼

git clone [email protected]:marblexu/PythonPlantsVsZombies.git

2).切換到python3環境,官方建議使用 python3.7 ,安裝 pygame

pip install pygame==1.9.6

3).切換到項目目錄,運行項目代碼

python main.py

安裝成功項目效果如下所示:

02

如何玩

使用鼠標收集陽光,收集植物卡片和植物的種子,只需要鼠標點點點操作

可以通過更改 的數值來更改起始關卡

1).START_LEVEL_NUM 爲1 和 2時表示起始爲白晝模式,如下圖:

2).START_LEVEL_NUM  爲 3 時表示起始爲夜晚模式,如下圖:

3).START_LEVEL_NUM  爲 4 時表示起始爲傳送帶模式,如下圖:

4).START_LEVEL_NUM  爲 5 時表示起始爲堅果保齡球模式模式,非常好玩,簡單粗暴!如下圖:

03

項目代碼一覽

項目代碼主要分爲這幾個大的模塊

植物大戰殭屍在操作上最大的特點在於,用鼠標點擊的操作更多。所以,我們看下這個項目是如何獲取鼠標操作相關的,通過下面的代碼得知:

它是用一個 event_loop 方法,透過 for event in pg.event.get() 這個循環,可以獲取所有鼠標和鍵盤操作,這是 pygame 中很靈活的一個功能,得到鼠標點擊動作之後,我們就需要得到鼠標點擊的位置。上面箭頭指的代碼是獲取鼠標點擊的橫縱座標的值,這樣就知道了一次鼠標點擊的位置了。

植物大戰殭屍裏面有不同的殭屍,不同的植物,甚至不同的地圖。比如說,在植物裏面就有很多種:最基本的向日葵,豌豆射手,堅果。因爲不同的植物有不同的屬性,我們就需要用不同的類來表示植物。

根據上面代碼可知,會先寫一個 Plant 基類,然後其他植物的類會繼承這個 Plant 基類

在這個遊戲中,殭屍移動的操作是連幀的。而不是完全是平移的。可以看下作者是如何處理動畫連幀操作的。如下圖:

這就是一組普通的殭屍,不仔細看的話以爲每個圖片都是一樣的,其實仔細看的時候就會發現,每個圖片殭屍的動作都是有細微差別的。在殭屍行走的過程中,實際上是在不斷地切換着一組圖片。這樣下來,我們看到的殭屍的動作就是連貫的。

04

如何作弊

通過上面介紹得知,該項目使用 json 文件存儲關卡數據(例如殭屍的位置和時間,背景信息),我們可以通過修改 json 文件內容來修改遊戲參數,比如把調一下初始陽光的數量,調整殭屍出現的位置。例如,如果source/constants.py 中的 START_LEVEL_NUM 值爲 3 ,要對應的修改 source/data/map/level_3.json

init_sun_value 對應的是初始化陽光的數值,time 是殭屍出現的時間,單位是毫秒,map_y 是殭屍出現的位置,地圖上從上向下開始數,初始位置爲0 。

有興趣的小夥伴可以下載一下這個庫,拿它來學習 Python 練手是一個不錯的選擇。

鏈接:

https://github.com/marblexu/PythonPlantsVsZombies

近期原創熱門:

菜鳥學Python原班人馬打造,專注於分享GitHub上有趣的資源包括,Python,Java,Go語言前端學習等優質的學習資源。爆料程序員圈的新鮮趣事,熱門乾貨,職場感悟。

程序員GitHub

點的“在看”,否則就看不到我了555
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章