본문 바로가기
프로그램

[파이썬] 문제 : tkinter 가위바위보 게임

by 오디세이99 2022. 12. 5.
728x90
반응형
from random import *
from tkinter import *
from tkinter import ttk

root = Tk()        # tkinter 설정

def select(human_choice):                           # 버튼 클리시 인수 넘어 옴
    lst = ['가위','바위','보']
    computer_choice = choice(lst)  # 램덤하게 리스트에서 하나를 선택. ramdon.choice()
    print()
    print('Computer choice =',computer_choice)
    print('Human choice =',human_choice)
    
    # 승리 판단법 : lst의 기본적으로 인덱스가 크면 승리. 단 +1 만큼 클때 승리
    c = computer_choice    # 변수명이 길어서 짧은 변수로 변경
    h = human_choice
    ci = lst.index(c)      # 해당 요소의 인덱스
    hi = lst.index(h)

    # print(c, ci, h, hi)
    win = ''
    if ci == hi+1 or ci+2 == hi:    # 컴퓨터 승리 조건
        win = '컴퓨터 승리'
        # print(c, h, win)
    elif ci+1 == hi:               # 휴먼 승리 조건
        win = '휴먼 승리'
        # print(c, h, win)
    else:
        win = '무승부'
        # print('무승부')
        
    result["text"] = win          # 결과 보여주는 Label의 text 변경
    
root.geometry('200x200')
frame = Frame(root)       # tkinter 위젯들을 포함할 틀(Frame) 설정
frame.pack(pady = 10)     # 좌우 여백 10 설정
b1 = ttk.Button(frame, text='가위', command=lambda: select('가위'))  # 버튼 추가. 클릭시 함수 select() 실행. 이때 인수 '가위' 넘겨 줌. 이때 lambda를 사용해야 인수 넘겨 줋 수 있음
b1.pack(pady = 2)
b2 = ttk.Button(frame, text='바위', command=lambda: select('바위'))
b2.pack(pady = 2)
b3 = ttk.Button(frame, text='보', command=lambda: select('보'))
b3.pack(pady = 2)
result = ttk.Label(frame, text = "")                     # 결과용 Label
# result.pack(side=RIGHT,padx=10,pady=10, anchor=CENTER)
result.pack(anchor=CENTER)


root.mainloop()

728x90
반응형

댓글