TIL_230822

Sol Lee·2023년 9월 19일
0

오늘 한 일

파이썬 개인과제 - 2. 가위 바위 보 게임 만들기

  1. 플레이어와 컴퓨터가 참여하는 가위바위보 게임을 만드세요.
  2. 게임은 다음 순서로 진행됩니다.
    • 플레이어가 가위, 바위, 보 중 하나를 입력합니다.
    • 컴퓨터도 무작위로 가위, 바위, 보 중 하나를 선택합니다.
    • 플레이어와 컴퓨터의 선택을 비교하여 승패를 판정합니다.
    • 결과를 출력하여 플레이어가 이겼는지, 컴퓨터가 이겼는지, 비겼는지를 알려줍니다.
    • 게임을 반복하거나 종료할 수 있는 기능을 추가하세요.

추가 도전 과제:

  • 게임의 승, 패, 무승부 횟수를 기록하고, 게임 종료 시에 플레이어에게 통계를 제공하세요.
  • 플레이어가 입력할 때 대소문자를 구분하지 않도록 프로그램을 개선하세요.
  • 플레이어가 게임을 반복하고 싶을 경우, 게임 재시작 여부를 묻고 그에 따라 게임을 초기화하거나 종료하는 기능을 추가하세요.

추가도전과제 2번은 입력을 한글로만 받을 거라서 패스하고 3번은 조금 이해를 잘못해서 초기화가 아니라 그냥 계속 게임을 진행하도록 해놨는데 지금이 마음에 들어서 수정 안 할 거다. 절대로 귀찮아서가 아니다.

import random


def game_result(com_hand, your_hand):
    """ 승패 판정 """
    win_hand = [('가위', '바위'), ('바위', '보'), ('보', '가위')]
    if com_hand == your_hand:
        return 'draw'
    else:
        win = win_hand.count((com_hand, your_hand))
        if win > 0:
            return 'win'
        else:
            return 'lose'


def play_rps():
    """ 가위 바위 보 게임 """
    hand = ['가위', '바위', '보']
    com_hand = random.choice(hand)
    your_hand = input("가위 바위 보? ")
    if your_hand not in hand:
        print("가위 바위 보 모름?")
    else:
        result = game_result(com_hand, your_hand)
        print(f'나: {com_hand} 너: {your_hand} 결과: {result}')
        return result


def start_game():
    """ 추가 도전 과제 - 1: 게임 통계 """
    win, lose, draw = 0, 0, 0

    while True:
        result = play_rps()
        if result == 'draw':
            draw += 1
        elif result == 'lose':
            lose += 1
        elif result == 'win':
            win += 1

        retry = input('다시? ')
        if retry == '다시':
            continue
        else:
            print('싫음 말고.')
            break

    print(f'승:{win} 패:{lose} 비김:{draw}')


start_game()

profile
직업: 개발자가 되고 싶은 오레오 집사

0개의 댓글