往期回顧
Python實作“小兔子和Bun”游戲
Python實作八音符小游戲
Python實作拼圖小游戲
Python實作滑雪小游戲
Python實作經典90坦克大戰
Python實作FlappyBird的小游戲
Python實恐龍跳一跳小游戲現
Python實作塔防小游戲
Python實作接水果和金幣小游戲
Python實作簡易版飛機大戰小游戲
Python實作俄羅斯方塊小游戲
前言:
周二給大家用python寫了個推箱子小游戲,在這里分享給大家,讓我們愉快地開始吧~
效果

開發工具
Python版本: 3.6.4
相關模塊:
pygame模塊;
以及一些Python自帶的模塊,
環境搭建
安裝Python并添加到環境變數,pip安裝需要的相關模塊即可,
原理簡介
游戲簡介(來源:百度百科):
經典的推箱子是一個來自日本的古老游戲,目的是在訓練你的邏輯思考能力,在一個狹小的倉庫中,要求把木箱放到指定的位置,稍不小心就會出現箱子無法移動或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動的次序和位置,才能順利的完成任務,
控制方式:
↑↓←→鍵控制人物行動,r鍵重新開始本關,
逐步實作:
Step1:定義游戲精靈類
由于游戲涉及到碰撞檢測,所以我們先來定義一些游戲精靈類,包括推箱子的人、箱子、墻和目標位置指示標記,
首先我們來定義一下推箱子的人這個精靈類:

他需要擁有可以移動的能力,這里設定了一個模擬移動的選項,是為了通過模擬移動判斷他是否可以向上/下/左/右移動,
因為地圖上的其他東西性質類似,所以我們把它們定義成同一個精靈類(T_T其實性質都類似,但是感徑訓是有必要區分一下人和物的):

其中箱子需要擁有可以移動的能力,其他則不能移動,模擬移動選項的功能與之前類似,
Step2:定義游戲地圖類
這里我們定義一個游戲地圖類,目的是用該類來創建任意的游戲地圖,因此,該類應當可以增加并保存游戲元素(人、墻、箱子等),并在螢屏上把地圖畫出來,同時也應當自帶一個方法來判斷此地圖上的箱子是否都已經送到了指定位置(這樣子方便切換關卡):

Step3:定義游戲界面類
游戲界面類負責決議levels檔案夾下的游戲各關卡的地圖檔案,并利用游戲地圖類創建并顯示游戲地圖:

同時因為游戲地圖面積>游戲視窗界面, 所以該類需要增加根據人物位置滾動游戲地圖的功能:

Step4:定義某關的游戲主回圈
主回圈主要負責實體化游戲界面類,并根據按鍵檢測的結果對游戲界面類進行一些操作:

其中人物移動的邏輯為:
人移動的目標位置為空白格,則人移動;若撞到箱子,箱子可以和人方向一樣移動一格,則人和箱子均移動;其他情況人和箱子均無法移動,
Step5:定義游戲開始、切換和結束界面
做的比較簡陋,直接給原始碼吧,
開始界面:

切換界面:

結束界面:

Step6:實作游戲主函式
把所有界面串起來就好啦:

文章到這里就結束了,感謝你的觀看,Python24個小游戲系列,下篇文章分享外星人入侵小游戲
為了感謝讀者們,我想把我最近收藏的一些編程干貨分享給大家,回饋每一個讀者,希望能幫到你們,
干貨主要有:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且經典的練手專案及原始碼)
④ Python基礎入門、爬蟲、web開發、大資料分析方面的視頻(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
⑥ 兩天的Python爬蟲訓練營直播權限
All done~點贊支持下~詳見個人簡介或者私信獲取完整源代碼,,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290755.html
標籤:其他
上一篇:三分鐘寫出一個“貪吃蛇”,有且只有python能這么輕松做到,不管你信不信(附代碼和注釋)
下一篇:這個三子棋,輸了就要接受懲罰哦!
