Python制作推箱子小游戲
相關文件
關注微信公眾號“Python學習指南”,公眾號內回復‘推箱子’獲取。
游戲圖片與音頻素材源于網絡,侵歉刪。
開
發
工
具
Python版本:3.6.4
相關模塊:
pygame模塊;
以及一些Python自帶的模塊。
環境搭建
安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。
原理簡介
游戲簡介(來源:百度百科):
經典的推箱子是一個來自日本的古老游戲,目的是在訓練你的邏輯思考能力。在一個狹小的倉庫中,要求把木箱放到指定的位置,稍不小心就會出現箱子無法移動或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動的次序和位置,才能順利的完成任務。
控制方式:
↑↓←→鍵控制人物行動,r鍵重新開始本關。
逐步實現:
Step1:定義游戲精靈類
由于游戲涉及到碰撞檢測,所以我們先來定義一些游戲精靈類,包括推箱子的人、箱子、墻和目標位置指示標記。
首先我們來定義一下推箱子的人這個精靈類:
他需要擁有可以移動的能力,這里設置了一個模擬移動的選項,是為了通過模擬移動判斷他是否可以向上/下/左/右移動。
因為地圖上的其他東西性質類似,所以我們把它們定義成同一個精靈類(T_T其實性質都類似,但是感覺還是有必要區分一下人和物的):
其中箱子需要擁有可以移動的能力,其他則不能移動。模擬移動選項的功能與之前類似。
Step2:定義游戲地圖類
這里我們定義一個游戲地圖類,目的是用該類來創建任意的游戲地圖。因此,該類應當可以增加并保存游戲元素(人、墻、箱子等),并在屏幕上把地圖畫出來。同時也應當自帶一個方法來判斷此地圖上的箱子是否都已經送到了指定位置(這樣子方便切換關卡):
Step3:定義游戲界面類
游戲界面類負責解析levels文件夾下的游戲各關卡的地圖文件,并利用游戲地圖類創建并顯示游戲地圖:
同時因為游戲地圖面積>游戲窗口界面, 所以該類需要增加根據人物位置滾動游戲地圖的功能:
Step4:定義某關的游戲主循環
主循環主要負責實例化游戲界面類,并根據按鍵檢測的結果對游戲界面類進行一些操作:
其中人物移動的邏輯為:
人移動的目標位置為空白格,則人移動;若撞到箱子,箱子可以和人方向一樣移動一格,則人和箱子均移動;其他情況人和箱子均無法移動。
Step5:定義游戲開始、切換和結束界面
做的比較簡陋,直接給源碼吧。
開始界面:
切換界面:
結束界面:
Step6:實現游戲主函數
把所有界面串起來就好啦:
All Done!完整源代碼詳見相關文件。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















