天天看點

快來用Python寫一個簡單版《我的世界》

​《我的世界 Minecraft》大家應該都聽說過,但你有沒有想過自己寫一個這樣的遊戲呢?太難、太複雜了?也許吧,但是不試一試你怎麼知道能不能成呢?​

​國外有位叫fogleman的開發者就用Python做了這樣的一件事——自制《我的世界 Minecraft》,誰能想到,僅僅900行的代碼,玩起來竟然還像模像樣的:​

快來用Python寫一個簡單版《我的世界》

接下來,我們就帶你運作這個項目,并對這個開源的小遊戲做一下簡單的更改,讓它變成“你的”世界。

​​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: 關閉視窗​

​來看看我的實畫:​

快來用Python寫一個簡單版《我的世界》

​這個“實”字着實難畫,寶典兩個字被我略去了,因為我選的地兒右邊空位不夠。​

​3.代碼解讀與自定義​

​接下來讓我們看看這份遊戲的代碼,整個遊戲代碼隻有902行,真優秀:​

快來用Python寫一個簡單版《我的世界》

在上圖紅框的位置可以設定預設的視窗大小。不僅如此,作者還給了一些參數以供自定義速度、重力、跳躍高度等:

# 每秒幀數
TICKS_PER_SEC = 60
# 磚塊大小
SECTOR_SIZE = 16
# 行走速度與飛行速度
WALKING_SPEED = 5
FLYING_SPEED = 15
# 重力與跳躍高度
GRAVITY = 20.0
MAX_JUMP_HEIGHT = 1.0      

我們能不能自定義磚塊類型呢?源代碼檔案夾下有一個texture圖檔:

快來用Python寫一個簡單版《我的世界》

​在源代碼中,涉及到使用者增加區塊的代碼隻有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個函數:​

快來用Python寫一個簡單版《我的世界》

看完tex_coords函數的參數你大概就知道了,這裡第一個參數,代表磚塊的頂部圖像,第二個參數代表底部圖像,第三個參數代表四個邊的圖像。而傳入的參數中,(1, 0) 則表示為texture.png 的第(1,0)個圖:

快來用Python寫一個簡單版《我的世界》

​比如沙子,頂邊、底邊、四邊都為一樣的(1,1)這個圖像,是以是:​

SAND = tex_coords((1, 1), (1, 1), (1, 1))      

​相信明白了這個原理後,你自己加一個自定義圖形的磚塊也不難了吧?大家可以動手試一試。給這個項目添磚加瓦,如果好看的話,說不定還能給作者提個PR,成為4k stars項目的貢獻者之一!​

如果你喜歡今天的Python 教程,請持續關注Python實用寶典,如果對你有幫助,麻煩在下面點一個贊

快來用Python寫一個簡單版《我的世界》

,有任何問題都可以在下方留言,我們會耐心解答的!