Raspbian操作系統默認搭載了一個特別的我的世界,特別之處在於可以使用python與外界進行交互,這意味着可以在遊戲中控制實體世界中的傳感器和執行器。還可以自定義搭建各種物品。
1.使用python與minecraft交互
在交互的時候要用到應用程序接口(API),用鍵盤控制部分就不多說了,我直接說與python如何交互。
在python3 IDE中創建.py文本
作爲程序員的行規,入手第一件事就是向世界問好
#向minecraft發送消息
from mcpi.minecraft import Minecraft
mc = Minecraft.create()
mc.postToChat("hello Minecraft World")
運行後效果出現
除此以外,還可以獲取角色在遊戲中的實時位置
#獲取人物的環境和實時信息
from mcpi.minecraft import Minecraft
mc = Minecraft.create()
position=mc.player.getTilePos()
print("X position :"+str(position.x)+",Y position :"+str(position.y)+",Z position:"+str(position.z))
from mcpi.minecraft import Minecraft
mc = Minecraft.create()
mc.player.setPos(0,0,0)
獲取環境信息
#尋找世界中某個座標點的地形情況
from mcpi.minecraft import Minecraft
import mcpi.block as block
def getSafePos(x_pos, y_pos, z_pos):
black_id=mc.getBlock(x_pos,y_pos,z_pos)
if(block_id==block.AIR.id):
while(block_id==block.AIR.id):
y_pos=y_pos-1
block_id=mc.getBlock(x_pos,y_pos,z_pos)
y_pos=y_pos+1
else :
while (block_id != block.AIR.id):
y_pos=y_pos+1
block_id=mc.getBlock(x_pos,y_pos,z_pos)
return (x_pos,y_pos,z_pos)
mc = Minecraft.create()
mc.player.setPos(getSafePos(0,0,0))
注意:運行最後的代碼要確定周圍的環境情況,否則會造成人物無法運動,遊戲也就無法進行下去。
import mcpi.minecraft as minecraft
import mcpi.block as block
from mcpi.minecraft import Minecraft
from gpiozero import Button
import time
#設置按鍵所連接的GPIO端口 &將程序連接到Minecraft
mc=Minecraft.create()
BTN_HOUSE=18
#房屋尺寸
house_size_x=16
house_size_y=6
house_size_z=10
#將房屋座標保存,方便傳送
#如果沒有定義,則設置爲0,0,0
#wec3可以用來創建位置向量
house_position=minecraft.Vec3(0,0,0)
#移動前的延遲
DELAY=1
#用於檢測按鍵的主循環
def main():
btn_house=Button(BTN_HOUSE)
while True:
if(btn_house.is_pressed):
#將當前座標設置爲房屋座標
#該座標將會是房屋的中點
house_position=mc.player.getTilePos()
build_house(house_position,house_size_x,house_size_y,house_size_z)
time.sleep(DELAY)
time.sleep(0.2)
def build_house (house_position,house_size_x,house_size_y,house_size_z):
#平整土地
mc.setBlocks(house_position.x-(house_size_x/2,house_position.y,house_position.z-(house_size_z/2),block.AIR.id)
這裏就舉一個列子,同樣的方法建造牆壁,房屋的尺寸根據左上角的座標來調整一下,如圖我是參考了github裏面一位國外玩家的方法所做,等等,同樣用函數模塊化, 這裏用到了mcpi.minecraft,mcpi.block,gpiozero