FLAMES는 친구, 연인, 애정, 결혼, 적을 상징하는 어린이를 위한 재미있는 게임입니다. 이 게임은 두 사람의 이름을 가지고 일련의 단계를 거쳐 두 사람의 관계를 결정합니다. FLAMES를 플레이하려면 두 사람의 이름을 적고 일치하는 글자를 제거한 후 남은 글자 수를 구하세요.
이 개수를 사용하여 FLAMES라는 단어의 글자를 반복하고 해당 글자를 제거합니다. 예를 들어, 개수가 4개인 경우 문자 M을 제거하고 다시 E부터 개수를 시작합니다. 관계 상태를 나타내는 문자가 하나만 남을 때까지 이 과정을 반복합니다.
Tkinter 모듈
FLAMES 게임을 빌드하려면 Tkinter 모듈을 사용해야 합니다. Tkinter는 그래픽 사용자 인터페이스를 빠르게 생성하는 데 사용할 수 있는 간단하고 사용자 친화적인 크로스 플랫폼 모듈입니다. 초보자가 Tkinter를 사용하여 만들 수 있는 애플리케이션으로는 음악 플레이어, 캘린더, 무게 변환 도구, 단어 맞추기 게임 등이 있습니다.
시스템에 tkinter를 설치하려면 터미널에서 다음 명령을 실행하세요:
pip install tkinter
파이썬을 사용하여 FLAMES 게임을 만드는 방법
Tkinter 모듈을 가져옵니다. 두 개의 목록을 입력으로 받아들이는 함수 remove_match_char() 를 정의합니다. 중첩된 for 루프를 사용하여 두 목록을 반복합니다. 일치하는 문자가 있는지 확인하고 일치하는 문자가 있으면 두 목록에서 제거하고 그 사이에 별표를 넣어 두 목록을 연결하는 세 번째 목록을 만듭니다. 별표는 구분 기호 역할을 합니다.
세 번째 목록과 일치하는 문자를 True로 반환합니다. 일치하는 문자가 없는 경우 위에서 만든 목록을 반환합니다.
from tkinter import *
def remove_match_char(list1, list2):
for i in range(len(list1)):
for j in range(len(list2)):
if list1[i] == list2[j]:
c = list1[i]
list1.remove(c)
list2.remove(c)
list3 = list1 + ["*"] + list2
return [list3, True]
list3 = list1 + ["*"] + list2
return [list3, False]
tell_status() 함수를 정의합니다. Entry 위젯의 get() 메서드를 사용하여 사용자가 입력한 사람의 이름을 검색합니다. 모든 문자를 소문자로 변환하고 그 사이의 공백을 제거합니다. 이름을 문자 목록으로 변환합니다. 두 번째 사람의 이름에 대해 이 작업을 반복하고 proceed 변수를 True 로 설정합니다.
def tell_status():
p1 = Person1_field.get()
p1 = p1.lower()
p1.replace(" ", "")
p1_list = list(p1)
p2 = Person2_field.get()
p2 = p2.lower()
p2.replace(" ", "")
p2_list = list(p2)
proceed = True
proceed 값이 참이 될 때까지 remove_match_char() 함수를 호출하고 방금 만든 두 목록을 전달합니다. 연결된 목록과 함수에서 받은 플래그 상태를 저장합니다. 삽입한 별표의 인덱스를 찾아 그 앞과 뒤에 있는 두 개의 목록으로 문자열을 분할합니다.
두 목록의 문자 수를 세고, FLAMES 게임에 따라 관계가 가질 수 있는 다양한 상태를 저장하는 목록을 정의합니다.
while proceed:
ret_list = remove_match_char(p1_list, p2_list)
con_list = ret_list[0]
proceed = ret_list[1]
star_index = con_list.index("*")
p1_list = con_list[: star_index]
p2_list = con_list[star_index + 1:]
count = len(p1_list) + len(p2_list)
result = ["Friends", "Love", "Affection", "Marriage", "Enemy", "Siblings"]
결과 목록의 문자가 0이 아닐 때까지 슬라이싱을 수행해야 하는 인덱스 값을 저장합니다. 인덱스가 0보다 크거나 같으면 목록을 두 부분으로 분할하고 오른쪽 부분부터 순서대로 추가하여 연결된 문자열을 저장합니다. 이렇게 하면 시계 반대 방향으로 계산할 수 있습니다.
결과를 첫 번째 문자 위치의 상태 필드에 삽입하여 관계 상태를 표시합니다.
while len(result) > 1:
split_index = (count % len(result) - 1)
if split_index >= 0:
right = result[split_index + 1:]
left = result[: split_index]
result = right + left
else:
result = result[: len(result) - 1]
Status_field.insert(0, result[0])
clear_all() 함수를 정의합니다. 세 개의 입력 필드에서 첫 번째 인덱스부터 마지막 인덱스까지 delete() 함수를 사용하여 화면에 표시된 내용을 지웁니다. 첫 번째 입력 필드에서 focus_set() 메서드를 사용하여 활성화하고 사용자가 값을 입력하도록 표시합니다.
def clear_all():
Person1_field.delete(0, END)
Person2_field.delete(0, END)
Status_field.delete(0, END)
Person1_field.focus_set()
Tkinter 인스턴스를 초기화하고 클래스에 전달하여 루트 창을 표시합니다. 원하는 배경색, 크기, 애플리케이션의 제목을 설정합니다.
root = Tk()
root.configure(background='#A020F0')
root.geometry("700x200")
root.title("FLAMES Game")
두 사람과 두 사람의 관계 상태를 나타내는 세 개의 레이블을 정의합니다. 레이블을 배치할 상위 창, 표시할 텍스트, 글꼴 색상, 배경색, 글꼴 스타일을 설정합니다. 가로 방향으로 약간의 패딩을 추가합니다.
label1 = Label(root, text="Name 1: ", fg='#ffffff',bg='#A020F0', font=("arial",20,"bold"), padx='20')
label2 = Label(root, text="Name 2: ", fg='#ffffff',bg='#A020F0', font=("arial",20,"bold"), padx='20')
label3 = Label(root, text="Relationship Status: ", fg='#ffffff', bg='#A020F0',font=("arial",20,"bold"), padx='20')
그리드 관리자를 사용하여 첫 번째 열에 세 개의 위젯을 정렬합니다. 첫 번째 레이블은 두 번째 행에, 두 번째 레이블은 세 번째 행에, 세 번째 레이블은 네 번째 행에 배치합니다.
label1.grid(row=1, column=0)
label2.grid(row=2, column=0)
label3.grid(row=4, column=0)
두 사람의 값을 가져오고 상태를 표시하는 세 개의 항목 위젯을 정의합니다. 위젯을 배치할 상위 창과 위젯에 사용할 글꼴 스타일을 설정합니다.
Person1_field = Entry(root, font=("arial", 15, "bold"))
Person2_field = Entry(root, font=("arial", 15, "bold"))
Status_field = Entry(root, font=("arial",15,"bold"))
마찬가지로 그리드 관리자를 사용하여 두 번째 열에 위젯을 구성합니다. ipadx 속성을 사용하여 위젯 테두리 안쪽에 패딩할 픽셀 수를 설정합니다.
Person1_field.grid(row=1, column=1, ipadx="50")
Person2_field.grid(row=2, column=1, ipadx="50")
Status_field.grid(row=4, column=1, ipadx="50")
두 개의 버튼, 제출 및 지우기 을 정의합니다. 배치할 상위 창, 표시할 텍스트, 배경색, 글꼴 색상, 클릭 시 실행할 기능, 글꼴 스타일 등을 설정합니다.
그리드 관리자를 사용하여 두 번째 열의 네 번째 행과 여섯 번째 행에 각각 버튼을 배치합니다.
button1 = Button(root, text="Submit", bg="#00ff00", fg="black", command=tell_status,font=("arial",13,"bold") )
button2 = Button(root, text="Clear", bg="#00ff00", fg="black", command=clear_all, font=("arial",13,"bold"))
button1.grid(row=3, column=1)
button2.grid(row=5, column=1)
mainloop() 함수는 파이썬에 창을 닫을 때까지 Tkinter 이벤트 루프를 실행하고 이벤트를 수신 대기하도록 지시합니다.
root.mainloop()
모든 코드를 조합하고 손끝에서 FLAMES 게임을 즐길 준비를 하세요.
FLAMES 게임의 샘플 출력
위 프로그램을 실행하면 3개의 레이블, 3개의 입력 필드, 2개의 버튼이 격자형으로 배열된 FLAMES 게임 프로그램이 표시됩니다. “토니 스타크”와 “페퍼 포츠”라는 이름을 영어로 입력하면 프로그램은 두 사람의 관계 상태를 “사랑”으로 표시합니다.
파이썬으로 만들 수 있는 게임
Py게임, 아케이드, 판다3D, 파이오픈GL, 파이글렛은 파이썬 게임을 빌드할 수 있는 몇 가지 유용한 모듈입니다. 파이게임을 사용하면 슈퍼 마리오 브라더스, 플래피 버드, 스네이크와 같은 2D 게임을 빌드할 수 있습니다. Arcade를 사용하면 팩맨, 소행성 또는 브레이크아웃 클론을 만들 수 있습니다.
Panda3D를 사용하면 툰타운 온라인, 캐리비안의 해적 온라인, 디즈니 버추얼 매직 킹덤과 같은 3D 게임을 만들 수 있습니다.