파이썬 가위 바위 보 게임

장현웅·2023년 8월 25일
0

가위 바위 보 게임


내용:

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

추가 도전 과제:

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

평가

  • 사용자의 입력값을 ‘가위 바위 보’로 제한할 수 있는가
  • 컴퓨터가 랜덤으로 ‘가위 바위 보’를 선택하게 할 수 있는가
  • 다중 if 문으로 승패를 비교할 수 있는가
  • while문을 이용해서 경기롤 반복시키고 통계를 만들 수 있는가

1) 플레이어가 가위, 바위, 보 중 하나를 입력합니다.

player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

2) 컴퓨터도 무작위로 가위, 바위, 보 중 하나를 선택합니다.

import random

rsp = ['Rock','Scissors','Paper']
computer_pick = random.choice(rsp)

# random_number = random.randint(0,2)
# computer_pick = rsp[random_number]

player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

3, 4) 플레이어와 컴퓨터의 선택을 비교하여 승패를 판정하고 결과를 출력하여 플레이어에게 알려줍니다.

import random

rsp = ['Rock','Scissors','Paper']
computer_pick = random.choice(rsp)
player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

if computer_pick == player_pick :
    print('비겼습니다.')
elif (computer_pick == 'Scissors' and player_pick == 'Rock') or (computer_pick == 'Rock' and player_pick == 'Paper') or (computer_pick == 'Paper' and player_pick == 'Scissors'):
    print('YOU WIN')
else:
    print('YOU LOSE')

5) 게임을 반복하거나 종료할 수 있는 기능을 추가하세요.

import random

rsp = ['Rock','Scissors','Paper']
computer_pick = random.choice(rsp)
print(computer_pick)

player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

while True:
    if computer_pick == player_pick :
        print('비겼습니다.')
    elif (computer_pick == 'Scissors' and player_pick == 'Rock') or (computer_pick == 'Rock' and player_pick == 'Paper') or (computer_pick == 'Paper' and player_pick == 'Scissors'):
        print('YOU WIN')
    else:
        print('YOU LOSE')
        
    restart = input('한 판 더? (Y/N) ')
    if restart.upper() == 'Y':
        continue
    else:
        break

# 게임이 다시 시작되지 않고 계속 restart의 input이 반복된다.
한 판 더? (Y/N) Y
YOU WIN
한 판 더? (Y/N) Y
YOU WIN

# 이유는 현재 코드에서는 사용자의 선택을 받는 부분(player_pick = input('가위 바위 보 중 하나를 선택하세요. '))이 반복문 밖에 있어서 한 번 입력된 선택이 계속해서 사용되기 때문에 무한 반복하는 상황이 발생하게 되는 것이다.

# 사용자가 게임을 다시 시작하면 computer_pick 값도 리셋되야하고 새로운 게임에 새로운 player_pick을 선택해서 사용하려면 player_pick의 input 박스도 반복문 안에 들어와야 한다.
import random

rsp = ['Rock','Scissors','Paper']


while True:
	computer_pick = random.choice(rsp)
	print(computer_pick)
    
	player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')
    
    if computer_pick == player_pick :
        print('비겼습니다.')
    elif (computer_pick == 'Scissors' and player_pick == 'Rock') or (computer_pick == 'Rock' and player_pick == 'Paper') or (computer_pick == 'Paper' and player_pick == 'Scissors'):
        print('YOU WIN')
    else:
        print('YOU LOSE')
    restart = input('한 판 더? (Y/N) ')
    if restart.upper() == 'Y':
        continue
    else:
        print(f"{wins}승 {draws}무 {loses}패")
        break

6) 게임의 승, 패, 무승부 횟수를 기록하고, 게임 종료 시에 플레이어에게 통계를 제공하세요.

import random

rsp = ['Rock','Scissors','Paper']

draws = 0
wins = 0
loses = 0

while True:
    computer_pick = random.choice(rsp)
    print(computer_pick)

    player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

    if computer_pick == player_pick :
        draws += 1
        print('비겼습니다.')
    elif (computer_pick == 'Scissors' and player_pick == 'Rock') or (computer_pick == 'Rock' and player_pick == 'Paper') or (computer_pick == 'Paper' and player_pick == 'Scissors'):
        wins += 1
        print('YOU WIN')
    else:
        loses += 1
        print('YOU LOSE')
    restart = input('한 판 더? (Y/N) ')
    if restart.upper() == 'Y':
        continue
    else:
        print(f"{wins}승 {draws}무 {loses}패")
        break

추가) Rock Scissors Paper 외의 값을 입력했을 때 메시지 띄우기

import random

rsp = ['Rock','Scissors','Paper']

draws = 0
wins = 0
loses = 0

while True:
    computer_pick = random.choice(rsp)
    print(computer_pick)

    player_pick = input('Rock Scissors Paper 중 하나를 선택하세요. ')

    if player_pick not in rsp:
        print('잘못 내셨습니다.')
        continue

    if computer_pick == player_pick :
        draws += 1
        print('비겼습니다.')
    elif (computer_pick == 'Scissors' and player_pick == 'Rock') or (computer_pick == 'Rock' and player_pick == 'Paper') or (computer_pick == 'Paper' and player_pick == 'Scissors'):
        wins += 1
        print('YOU WIN')
    else:
        loses += 1
        print('YOU LOSE')
    restart = input('한 판 더? (Y/N) ')
    if restart.upper() == 'Y':
        continue
    else:
        print(f"{wins}승 {draws}무 {loses}패")
        break

완성!!


0개의 댓글