臥槽!我的世界也有開源版本了!!!

公衆號關注 “GitHubDaily”

設爲 “星標”,每天帶你逛 GitHub!

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

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

項目地址:

https://github.com/fogleman/Minecraft

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

1. 準備

開始之前,當然是要確保 Python 和 pip 已經成功安裝在電腦上了。如果還沒有,那趕緊看下我們教程開始的 “安裝” 章節。

然後,Windows 環境下打開 CMD (開始 — 運行 —CMD),蘋果系統環境下請打開 終端 Terminal (command + 空格輸入 Terminal)。

輸入以下命令安裝我們所需要的依賴模塊:

pip install pyglet


看到 Successfully installed ... 則說明安裝成功。

接着獲取項目源代碼:

git clone https://github.com/fogleman/Minecraft.git

2. 運行及操作

運行這個項目非常簡單,你只需要進入源代碼文件夾輸入以下命令

python main.py

即可成功運行該遊戲項目,然後體驗一下這個遊戲。

遊戲操作:

移動

  • W: 前進

  • S: 後退

  • A: 往左

  • D: 往右

  • 鼠標移動:視角

  • 空格:跳躍

  • Tab: 切換到飛行模式

建築

  • 選擇建造類型:

    • 1: 磚塊

    • 2: 草叢

    • 3: 沙丘

  • 鼠標左鍵:去除建築

  • 鼠標右鍵:增加建築

退出

  • ESC: 關閉窗口

來看看我的實畫:

3. 代碼解讀與自定義

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

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

# 每秒幀數TICKS_PER_SEC = 60# 磚塊大小SECTOR_SIZE = 16# 行走速度與飛行速度WALKING_SPEED = 5FLYING_SPEED = 15# 重力與跳躍高度GRAVITY = 20.0MAX_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 項目的貢獻者之一!

---

由 GitHubDaily 原班人馬打造的公衆號:GitCube,現已正式上線!
接下來我們將會在該公衆號上,爲大家分享優質的計算機學習資源與開發者工具,堅持每天一篇原創文章的輸出,感興趣的小夥伴可以關注一下哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章