<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python實現(xiàn)80后童年經(jīng)典游戲:坦克大戰(zhàn)

          共 1541字,需瀏覽 4分鐘

           ·

          2021-03-17 13:36



          導(dǎo)語


          大家好,歡迎來到 Crossin的編程教室 !


          FC紅白機上的“經(jīng)典90坦克大戰(zhàn)”是不少80后童年的集體回憶(暴露年齡了)。今天我們就分享一個用Python制作的仿“坦克大戰(zhàn)”小游戲。


          廢話不多說,讓我們愉快地開始吧~


          環(huán)境搭建


          安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。


          pip install pygame


          先睹為快



          原理介紹


          游戲源碼的整體邏輯還是很清晰的,也做了很多必要的注釋,所以這里講一下主要的思路,實現(xiàn)的細節(jié)請閱讀源代碼。


          游戲規(guī)則:


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


          玩家操作方式如下:


          玩家一:

          wsad鍵:上下左右;

          空格鍵:射擊。

          玩家二:

          ↑↓←→鍵:上下左右;

          小鍵盤0鍵:射擊。



          逐步實現(xiàn):


          Step1:定義精靈類


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


          首先,既然是坦克大戰(zhàn),總得有坦克吧?


          己方坦克:



          上面的代碼定義了坦克的一些屬性,例如速度、等級、是否處于受保護狀態(tài)等等。


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


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



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



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



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



          敵方坦克:


          敵方坦克和己方坦克定義的源代碼很相似,只不過移動是隨機的,死后是不可復(fù)生的,就不截圖了。


          現(xiàn)在,我們可以來定義子彈類了!


          子彈類:


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



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


          大本營:


          有正常和被摧毀兩種狀態(tài):



          地圖障礙物:


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



          食物道具:


          一共有7種道具,不同的道具對應(yīng)不同的效果:




          Step2:設(shè)計游戲地圖


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



          我偷懶只設(shè)計了一個地圖和兩個關(guān)卡,有興趣的小伙伴同樣可以在此基礎(chǔ)上設(shè)計更多的地圖和關(guān)卡。


          Step3:實現(xiàn)游戲主循環(huán)


          主循環(huán)的代碼比較長,不過邏輯很清晰。首先展示游戲開始界面,玩家在此界面選擇游戲模式后進入游戲;在游戲中,需要進行一系列的碰撞檢測以及觸發(fā)碰撞產(chǎn)生的一系列事件,并繪制當前存在的所有物體;最后,若游戲失敗,則顯示游戲失敗界面,若通關(guān),則顯示游戲成功界面(Demo版本界面設(shè)計比較簡陋,有興趣的小伙伴又可以擴展啦~)。


          All Done!


          完整源代碼和游戲素材以及打包好的游戲文件都在相關(guān)文件里有,自行下載查看即可~


          源代碼


          公眾號(Crossin的編程教室)內(nèi)回復(fù) 坦克 獲取。

          圖片素材源于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系作者刪除。


          歡迎有興趣的小伙伴進一步拓展游戲。如果文章對你有幫助,歡迎轉(zhuǎn)發(fā)/點贊/收藏~


          作者:白露未晞me

          來源:Charles的皮卡丘


          _往期文章推薦_

          代碼吃雞,來挑戰(zhàn)嗎?




          如需了解付費精品課程教學(xué)答疑服務(wù)
          請在Crossin的編程教室內(nèi)回復(fù): 666

          瀏覽 87
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  啊啊草,在厕所操视频 | 这里只有精品视频99 | 国产精品福利免费在线观看 | 国产又黄又爽的免费视频 | 黄色成人网站在线观看 |