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

《個人世界 Minecraft》你們應該都據說過,但你有沒有想過本身寫一個這樣的遊戲呢?太難、太複雜了?也許吧,可是不試一試你怎麼知道能不能成呢?php

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


接下來,咱們就帶你運行這個項目,並對這個開源的小遊戲作一下簡單的更改,讓它變成「你的」世界。python

1.準備

開始以前,你要確保Python和pip已經成功安裝在電腦上噢,若是沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。若是你用Python的目的是數據分析,能夠直接安裝Anaconda:Python數據分析與挖掘好幫手—Anacondanginx

Windows環境下打開Cmd(開始—運行—CMD),蘋果系統環境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。git

固然,我更推薦你們用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端運行命令安裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細指南github

在終端輸入如下命令安裝咱們所須要的依賴模塊:編程

pip install pyglet


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

微信

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

也能夠在Python實用寶典公衆號後臺回覆:MC 下載。app

2.運行及操做

運行這個項目很是簡單,你只須要進入源代碼文件夾輸入如下命令:dom

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項目的貢獻者之一!

若是你喜歡今天的Python 教程,請持續關注Python實用寶典,若是對你有幫助,麻煩在下面點一個贊/在看,有任何問題均可以在下方留言,咱們會耐心解答的!


點擊下方閱讀原文能夠獲取全部代碼和連接哦!

Python實用寶典 (pythondict.com)

不僅是一個寶典

歡迎關注公衆號:Python實用寶典

本文分享自微信公衆號 - Python實用寶典(pythondict)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索