如何利用python在minecraft中建造金字塔
前言
原理即为通过python操控键盘,不断输入指令实现。整个过程和minecraft的function指令类似,但是由于本人使用的是糟糕的网易版我的世界,function指令无法使用,只能借助python。这里使用的库为pynput,pyautogui库也可以操控键盘,但是缺点在于进入我的世界后,pyautogui库就会失效,但是pynput库不会失效
首先,产生设置方块的指令,并存放到building.txt文件中:
a = {(-1351, 142, -551)} # 使用集合可以过滤掉重复元素
def myiter(): # 由金字塔的顶部方块(x,y,z)产生四个次级方块(x+1,y,z-1),(x-1,y,z-1),(x,y+1,z-1),(x,y-1,z-1),然后这四个次级方块再次进行这样的操作……
for i in a.copy(): # 如果不进行复制的话,在迭代中改变了集合的元素,会报错:RuntimeError: Set changed size during iteration
b1 = (i[0] + 1, i[1] - 1, i[2]) # 我的世界的第二个坐标为z
b2 = (i[0] - 1, i[1] - 1, i[2])
b3 = (i[0], i[1] - 1, i[2] + 1)
b4 = (i[0], i[1] - 1, i[2] - 1)
a.add(b1)
a.add(b2)
a.add(b3)
a.add(b4)
for j in range(70):
myiter()
file = open('building.txt', mode='w')
for k in a:
file.write('/setblock ' + str(k[0]) + ' ' + str(k[1]) + ' ' + str(k[2]) + ' stone' + '\n') # 设置方块
然后读取building.txt文件,逐行执行指令:
from pynput.keyboard import Controller, Key import time time.sleep(10) # 此时手动打开我的世界 keyboard = Controller() file = open('building.txt', mode='r') for line in file.readlines(): keyboard.type(line) # 输入指令 keyboard.press(Key.enter) # 输入回车
本人测试后发现,效果并不是很好,有时指令会不完整,并且操作频繁会导致电脑黑屏
浙公网安备 33010602011771号