教你用 Python 自制簡單版《我的世界》
《我的世界 Minecraft》大家應該都聽說過,但你有沒有想過自己寫一個這樣的遊戲呢?太難、太複雜了?也許吧,但是不試一試你怎麼知道能不能成呢?
國外有位叫 fogleman 的開發者就用 Python 做了這樣的一件事——自制《我的世界 Minecraft》,誰能想到,僅僅 900 行的代碼,玩起來竟然還像模像樣的:
接下來,我們就帶你運行這個項目,並對這個開源的小遊戲做一下簡單的更改,讓它變成 “你的” 世界。
1. 準備
開始之前,你要確保 Python 和 pip 已經成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細 Python 安裝指南 進行安裝。如果你用 Python 的目的是數據分析,可以直接安裝 Anaconda:Python 數據分析與挖掘好幫手—Anaconda
Windows 環境下打開 Cmd(開始—運行—CMD),蘋果系統環境下請打開 Terminal(command + 空格輸入 Terminal),準備開始輸入命令安裝依賴。
當然,我更推薦大家用 VSCode 編輯器,把本文代碼 Copy 下來,在編輯器下方的終端運行命令安裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細指南。
在終端輸入以下命令安裝我們所需要的依賴模塊:
pip install pyglet
看到 Successfully installed xxx 則說明安裝成功
git clone https://github.com/fogleman/Minecraft.git
也可以在 Python 實用寶典公衆號後臺回覆:**MC **下載。
2. 運行及操作
運行這個項目非常簡單,你只需要進入源代碼文件夾輸入以下命令:
python main.py
即可成功運行該遊戲項目,然後體驗一下這個遊戲:
移動
-
W: 前進
-
S: 後退
-
A: 往左
-
D: 往右
-
鼠標移動: 視角
-
空格: 跳躍
-
Tab: 切換到飛行模式
建築
-
選擇建造類型:
-
1: 磚塊
-
2: 草叢
-
3: 沙丘
-
鼠標左鍵:去除建築
-
鼠標右鍵:增加建築
退出
- ESC: 關閉窗口
來看看我的實畫:
這個 “實” 字着實難畫,寶典兩個字被我略去了,因爲我選的地兒右邊空位不夠。
3. 代碼解讀與自定義
接下來讓我們看看這份遊戲的代碼,整個遊戲代碼只有 902 行,真優秀:
在上圖紅框的位置可以設定默認的窗口大小。不僅如此,作者還給了一些參數以供自定義速度、重力、跳躍高度等:
# 每秒幀數
TICKS_PER_SEC = 60
# 磚塊大小
SECTOR_SIZE = 16
# 行走速度與飛行速度
WALKING_SPEED = 5
FLYING_SPEED = 15
# 重力與跳躍高度
GRAVITY = 20.0
MAX_JUMP_HEIGHT = 1.0
我們能不能自定義磚塊類型呢?源代碼文件夾下有一個 texture 圖片:
在源代碼中,涉及到用戶增加區塊的代碼只有 3 行,如 SAND:
SAND = tex_coords((1, 1), (1, 1), (1, 1))
# ... ...
t = random.choice([GRASS, SAND, BRICK])
# ... ...
self.inventory = [BRICK, GRASS, SAND]
# 1.brick, 2.grass, 3.sand
也就是說,我們增加自己的區塊是完全可能的,那麼這個 tex_coords((1, 1), (1, 1), (1, 1)) 是什麼意思呢?看看下面這 2 個函數:
看完 tex_coords 函數的參數你大概就知道了,這裏第一個參數,代表磚塊的頂部圖像,第二個參數代表底部圖像,第三個參數代表四個邊的圖像。而傳入的參數中,(1, 0) 則表示爲 texture.png 的第 (1,0) 個圖:
比如沙子,頂邊、底邊、四邊都爲一樣的 (1,1) 這個圖像,因此是:
SAND = tex_coords((1, 1), (1, 1), (1, 1))
相信明白了這個原理後,你自己加一個自定義圖形的磚塊也不難了吧?大家可以動手試一試。給這個項目添磚加瓦,如果好看的話,說不定還能給作者提個 PR,成爲 4k stars 項目的貢獻者之一!
如果你喜歡今天的 Python 教程,請持續關注 Python 實用寶典,如果對你有幫助,麻煩在下面點一個贊 / 在看
歡迎關注公衆號:Python 實用寶典
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/rKTsXs12Qne-aB_8ppFIKw