小夥利用Python自制一個推箱子小遊戲!
導語
月初更波python製作小遊戲系列吧用python寫了個推箱子小遊戲,在這裡分享給大家,讓我們愉快地開始吧
進群進群:943752371可以獲取Python各類入門學習資料!
這是我的微信公眾號【Python程式設計之家】各位大佬用空可以關注下,每天更新Python學習方法,感謝!
111111111111.png
小夥利用Python自制一個推箱子小遊戲!
開發工具
Python版本:3.6.4
相關模組:pygame模組;以及一些Python自帶的模組。
環境搭建
安裝Python並新增到環境變數,pip安裝需要的相關模組即可。
實現效果
在cmd視窗執行"Game12.py"檔案即可。
效果如下:
小夥利用Python自制一個推箱子小遊戲!
小夥利用Python自制一個推箱子小遊戲!
原理簡介
遊戲簡介(來源:百度百科):
經典的推箱子是一個來自日本的古老遊戲,目的是在訓練你的邏輯思考能力。在一個狹小的倉庫中,要求把木箱放到指定的位置,稍不小心就會出現箱子無法移動或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動的次序和位置,才能順利的完成任務。
控制方式:
↑↓←→鍵控制人物行動,r鍵重新開始本關。
逐步實現:
Step1:定義遊戲精靈類
由於遊戲涉及到碰撞檢測,所以我們先來定義一些遊戲精靈類,包括推箱子的人、箱子、牆和目標位置指示標記。
首先我們來定義一下推箱子的人這個精靈類:
小夥利用Python自制一個推箱子小遊戲!
他需要擁有可以移動的能力,這裡設定了一個模擬移動的選項,是為了通過模擬移動判斷他是否可以向上/下/左/右移動。
因為地圖上的其他東西性質類似,所以我們把它們定義成同一個精靈類(T_T其實性質都類似,但是感覺還是有必要區分一下人和物的):
小夥利用Python自制一個推箱子小遊戲!
其中箱子需要擁有可以移動的能力,其他則不能移動。模擬移動選項的功能與之前類似。
Step2:定義遊戲地圖類
這裡我們定義一個遊戲地圖類,目的是用該類來建立任意的遊戲地圖。因此,該類應當可以增加並儲存遊戲元素(人、牆、箱子等),並在螢幕上把地圖畫出來。同時也應當自帶一個方法來判斷此地圖上的箱子是否都已經送到了指定位置(這樣子方便切換關卡):
小夥利用Python自制一個推箱子小遊戲!
Step3:定義遊戲介面類
遊戲介面類負責解析levels資料夾下的遊戲各關卡的地圖檔案,並利用遊戲地圖類建立並顯示遊戲地圖:
小夥利用Python自制一個推箱子小遊戲!
同時因為遊戲地圖面積>遊戲視窗介面, 所以該類需要增加根據人物位置滾動遊戲地圖的功能:
小夥利用Python自制一個推箱子小遊戲!
Step4:定義某關的遊戲主迴圈
主迴圈主要負責例項化遊戲介面類,並根據按鍵檢測的結果對遊戲介面類進行一些操作:
小夥利用Python自制一個推箱子小遊戲!
其中人物移動的邏輯為:
人移動的目標位置為空白格,則人移動;若撞到箱子,箱子可以和人方向一樣移動一格,則人和箱子均移動;其他情況人和箱子均無法移動。
Step5:定義遊戲開始、切換和結束介面
做的比較簡陋,直接給原始碼吧。
開始介面:
小夥利用Python自制一個推箱子小遊戲!
切換介面:
小夥利用Python自制一個推箱子小遊戲!
結束介面:
小夥利用Python自制一個推箱子小遊戲!
Step6:實現遊戲主函式
把所有介面串起來就好啦:
小夥利用Python自制一個推箱子小遊戲!
隨手加了個背景音樂,應該問題不大吧T_T。