经典坦克大战的python实现
歡迎加入我們臥虎藏龍的python討論qq群:729683466
導(dǎo)語
看到封面
大家一定覺得很熟悉
這不就是小時(shí)候經(jīng)常玩的坦克大戰(zhàn)嗎
現(xiàn)在有沒有想過用python實(shí)現(xiàn)一下
了解一下游戲的內(nèi)部結(jié)構(gòu)是什么樣的
直接開始吧!!
相關(guān)資源 代碼獲取
1:關(guān)注“python趣味愛好者”公眾號(hào),回復(fù)“經(jīng)典坦克大戰(zhàn)2 ”獲取源代碼。
?#?效果展示?
# 開發(fā)工具
編譯器:python3.6.4
主要的第三方庫:pygame
#往期推薦
#??python小游戲之《躲避太空垃圾》
#??用python做一個(gè)“船新”的貪吃蛇
# 講解部分
一:游戲介紹
其實(shí)這個(gè)游戲根本就不用介紹,大家都懂
二:主體構(gòu)成(地圖講解為主)
關(guān)于如何用python寫游戲,公眾號(hào)其實(shí)已經(jīng)講過很多次了。一些基礎(chǔ)的內(nèi)容可以看公眾號(hào)以前發(fā)的推文。
《推箱子》python小游戲(第一期)
《推箱子》python小游戲(第二期)
這里只講一講這個(gè)游戲的特別之處,我之所以推薦了兩個(gè)《推箱子》推文的鏈接,是因?yàn)檫@個(gè)坦克大戰(zhàn)與推箱子游戲有異曲同工之妙。游戲都是一個(gè)又一個(gè)方塊構(gòu)成的。
只是這里面的游戲元素更多,有己方坦克,對(duì)方坦克,墻壁,草地,老鷹之類的。
如何構(gòu)成這樣的有界面呢?用最簡單的話來說,就是在適當(dāng)?shù)臅r(shí)刻,在適當(dāng)?shù)淖鴺?biāo)點(diǎn)上畫適當(dāng)?shù)膱D像。
那么如何將圖像畫在界面上呢?
......
此處省略1000字
......
這些內(nèi)容在之前的游戲推文中講的很詳細(xì)了。
之前每次講游戲的時(shí)候,都會(huì)重點(diǎn)講一講按鍵操作,在這次的游戲講解中,我決定不講按鍵操作了,講一個(gè)大家普遍不注意的問題。那就是游戲地圖。
說到游戲地圖,大家首先想到的肯定是那種精美的3D游戲的圖,但是在普通的小游戲中,游戲地圖可以非常簡單。這個(gè)游戲的地圖就是用一個(gè)非常簡單的矩陣表示的。
# 地圖MAP_ONE = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],[0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, ],[0, 1, 0, 0, 1, 3, 3, 1, 1, 2, 1, 1, 3, 3, 1, 0, 0, 1, 0, ],[0, 1, 0, 0, 1, 3, 3, 1, 1, 2, 1, 1, 3, 3, 1, 0, 0, 1, 0, ],[0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, ],[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ],[1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, ],[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ],[0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, ],[0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, ],[0, 1, 3, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 3, 1, 0, ],[0, 1, 3, 3, 3, 1, 0, 0, 1, 1, 1, 0, 0, 1, 3, 3, 3, 1, 0, ],[0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, ],]這段代碼放在這里,內(nèi)行看到的根本就不是一個(gè)矩陣,而是這個(gè)
大家看到的矩陣?yán)锩娲蠖鄶?shù)地方都是0,這很正常,如果這個(gè)矩陣的這個(gè)位置是0,代表的意思是這個(gè)矩陣的這個(gè)位置是空白的,什么也沒有。如果是1,代表這個(gè)地方是一個(gè)紅色的磚墻,2代表的是炮彈也打不穿的鐵墻,3代表的是可以藏身的草地,5代表的就是老鷹。
如果你需要讓這個(gè)游戲豐富起來,想設(shè)置更多的游戲地圖,有個(gè)很簡單的方法,直接在代碼里面修改這個(gè)矩陣即可。
不行你可以嘗試一下,把這個(gè)矩陣?yán)锩娴臄?shù)字打亂,那么出現(xiàn)在你面前的絕對(duì)是一個(gè)亂七八糟的圖。
三:游戲的進(jìn)階
玩這個(gè)游戲的時(shí)候,大家也許會(huì)注意到。敵方坦克發(fā)射炮彈和移動(dòng)都是隨機(jī)的,這導(dǎo)致地方戰(zhàn)斗力過差。很容易被我方坦克擊破。如果感興趣的朋友,可以想個(gè)辦法,讓地方的坦克能夠?qū)ふ夷繕?biāo),然后定向開炮。
另外就是,敵方坦克被擊破以后無法復(fù)活,這顯然是沒法長時(shí)間玩的,所以可以加一個(gè)復(fù)活的功能。
如果是聯(lián)機(jī)對(duì)戰(zhàn),還可以加一個(gè)埋地雷的功能。
如果以后有時(shí)間,我們會(huì)一一實(shí)現(xiàn)這些功能。
作者|齊
編輯|齊
PYTHON
掃二維碼|關(guān)注我們
QQ群:729683466
# 參考來源
代碼來源:github
總結(jié)
以上是生活随笔為你收集整理的经典坦克大战的python实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量输出dwg文件中的文本
- 下一篇: 5款十分小众,却又非常好用的良心软件