如何利用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) # 输入回车
本人测试后发现,效果并不是很好,有时指令会不完整,并且操作频繁会导致电脑黑屏