如何利用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)  # 输入回车

 

本人测试后发现,效果并不是很好,有时指令会不完整,并且操作频繁会导致电脑黑屏

 

posted @ 2022-05-01 13:59  树叶本子  阅读(450)  评论(0)    收藏  举报