본문 바로가기
프로그램/Python 1000제

Python 279제] 파이썬 EXPRESS CHAPTER 9. 도전문제 p428

by 건티 2024. 5. 21.
728x90

출처 : 반크_독도2023

 

참고풀이]

from tkinter import *
import random

result = ""
human = ""
computer = ""

def pass_r():
    who_winner("바위")

def pass_s():
    who_winner("가위")

def pass_p():
    who_winner("보")

def computer_game():
    global computer
    computer = random.choice(["가위", "바위", "보"])

    if computer == "바위":
        computer_image["image"] = rock_image
    elif computer == "가위":
        computer_image["image"] = scissors_image
    else:
        computer_image["image"] = paper_image

def who_winner(human):
    global computer

    #컴퓨터의 이미지를 저장한다.
    computer_game()

    #게이머가 지정한 이미지를 저장한다.
    if human == "바위":
        human_image["image"] = rock_image
    elif human == "가위":
        human_image["image"] = scissors_image
    else:
        human_image["image"] = paper_image

    #게이머와 컴퓨터의 승자를 체크한다.
    if computer == human:
        result="비겼습니다."
    elif (computer == "바위" and human == "보") or (computer == "가위" and human == "바위") or (
         computer == "보" and human == "가위"):
        result="인간이 이겼습니다."
    elif (computer == "보" and human == "바위") or (computer == "바위" and human == "가위") or (
         computer == "가위" and human == "보"):
        result="컴퓨터가 이겼습니다."

    #결과를 레이블에 출력한다.
    winner.config(text="인간:" + human + ", 컴퓨터:" + computer + " ==> " + result)
    
#Main Part
window = Tk()
Label(window, text="선택하세요",font=("Helvetica","20")).pack()
frame = Frame(window,pady=10)

rock_image = PhotoImage(file="rock.png")
scissors_image = PhotoImage(file="scissors.png")
paper_image = PhotoImage(file="paper.png")

#게이머가 선택하는 부분
rock = Button(frame, image=rock_image, command=pass_r)
rock.pack(side="left")
paper = (Button(frame, image=paper_image, command=pass_p))
paper.pack(side="left")
scissors = Button(frame, image=scissors_image, command=pass_s)
scissors.pack(side="left")
frame.pack()

#컴퓨터와 게이머가 선택한 결과 부분
f2=Frame(window,pady=10)
human_image = Label(f2, image=rock_image)
human_image.pack(side="left" )
computer_image = Label(f2, image=rock_image)
computer_image.pack(side="right")
f2.pack()

#게이머와 컴퓨터의 승부여부 부분
winner = Label(window, text=" "*70, font=("Helvetica","24",), bg="yellow")
winner.pack()

window.mainloop()

 

참고풀이 결과]

시작화면)

컴퓨터가 이겼을 때)

비겼을 때)

게이머가 이겼을 때)

 

 

 

참고]

문제96) 두근두근 파이썬 10장 연습문제6 p313

 

이미지]

가위바위보.zip
0.05MB

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 봄

 

반응형

댓글