日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

快来试试Python写的游戏《我的世界》

發布時間:2023/12/14 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快来试试Python写的游戏《我的世界》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

國外有位叫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))是什么意思呢?

def tex_coord(x, y, n=4):""" Return the bounding vertices of the texture square."""m = 1.0 / ndx = x * mdy = y * mreturn dx, dy, dx + m, dy, dx + m, dy + m, dx, dy + mdef tex_coords(top, bottom, side):""" Return a list of the texture squares for the top, bottom and side."""top = tex_coord(*top)bottom = tex_coord(*bottom)side = tex_coord(*side)result = []result.extend(top)result.extend(bottom)result.extend(side * 4)return resultTEXTURE_PATH = 'texture.png'GRASS = tex_coords((1, 0), (0, 1), (0, 0)) SAND = tex_coords((1, 1), (1, 1), (1, 1)) BRICK = tex_coords((2, 0), (2, 0), (2, 0)) STONE = tex_coords((2, 1), (2, 1), (2, 1))

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

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

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

相信明白了這個原理后,你自己加一個自定義圖形的磚塊也不難了吧?大家可以動手試一試。

我們的文章到此就結束啦,如果你希望我們今天的Python 實戰教程,請持續關注我們,如果對你有幫助,麻煩在下面點一個贊/在看哦,有任何問題都可以在下方留言區留言,我們都會耐心解答的!


Python實用寶典
不只是一個寶典
歡迎關注公眾號:Python實用寶典

原文來自Python實用寶典:快來試試Python寫的游戲《我的世界》

總結

以上是生活随笔為你收集整理的快来试试Python写的游戏《我的世界》的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。