본문 바로가기
프로그래밍/마인크래프트

파이썬 마인크래프트 : 텔레포트 GUI만들기

by 인성패밀리 2022. 6. 17.
반응형

이전 포스팅에서 다룬 텔레포트와 tkinter 모듈을 사용하여  GUI 창을 통해 마인크래프트의 텔레포트 기능을 만들어보겠습니다.

from tkinter import *
from mcpi.minecraft import Minecraft

X_AXIS = 240
Y_AXIS = -78
Z_AXIS = -208

mc = Minecraft.create()  # 서버와 연결


def tp():
    """원하는 좌표로 이동"""
    # x = int(input_x.get())
    # y = int(input_y.get())
    # z = int(input_z.get())
    xyz = []
    for val in range(3):  # 각 좌표값을 받아옴
        temp = int(input_list[val].get())
        xyz.append(temp)

    mc.player.setTilePos(xyz[0]+X_AXIS, xyz[1]+Y_AXIS, xyz[2]+Z_AXIS)


def my_home():
    """집으로 이동"""
    mc.player.setTilePos(-226 + X_AXIS, 63 + Y_AXIS, 353 + Z_AXIS)


root = Tk()

root.geometry("500x600")
root.minsize(500, 600)
root.maxsize(500, 600)
root.title("나만의 마인크래프트 툴")

tp_label = LabelFrame(root, text="원하는 위치 텔레포트", font=('돋움', 20, 'bold'))
tp_label.pack(fill='x', padx=5, pady=5)

for index, name in enumerate(['x좌표', 'y좌표', 'z좌표']):
    Label(tp_label,
          text=name,
          font=('굴림', 15)).grid(row=index,
                                 column=0,
                                 padx=5,
                                 pady=5)

# xyz 입력창
input_list = [
    Entry(tp_label, width=20, font=('굴림', 15)),
    Entry(tp_label, width=20, font=('굴림', 15)),
    Entry(tp_label, width=20, font=('굴림', 15))
]
for i in range(3):
    input_list[i].grid(row=i,
                       column=1,
                       padx=5,
                       pady=5)

but1 = Button(tp_label, text="텔레포트", width=7, command=tp)
but1.grid(row=3, column=0, padx=5, pady=5)
but2 = Button(tp_label, text="우리 집", width=7, command=my_home)
but2.grid(row=3, column=1, padx=5, pady=5)

root.mainloop()

해당 코드를 실행하면 다음과 같은 창이 만들어집니다.

 

지난 포스팅에서 다룬 내용에 GUI를 넣은 것 밖에 없습니다.

 

텔레포트 기능이 사실 tp명령어를 이용하면 되지만 공부한 파이썬으로 이렇게 만들어본다는 점이 상당히 재미있었습니다.

 

조만간 간단하게  GUI를 만들 수 있는 과정을 담아보겠습니다.

반응형

댓글