파이썬으로 가위바위보 게임 만들기

alsk9624·2024년 7월 3일
0

TIL

목록 보기
7/21

과제 내용:

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

추가 도전 과제:

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

이젠 안 쓰면 섭섭하다.
난 초심자다.
배밀이도 못하는 초심자 수준이니까 로직을 또 손으로 짰다.

대충 이런 식으로...일단 적었다.
맞는지 아닌지도 모른다 그냥 적었다.

  1. 일단 역시 랜덤으로 가위,바위,보를 출력해야 되기 때문에 랜덤 생성 함수 ㄱㄱ
import random
  1. 컴퓨터와 사용자가 각각 랜덤으로 가위,바위,보를 선택해야 함,
    먼저 컴퓨터가 선택
rsp = ['Rock', 'Scissor', 'Paper']
computer_pick = random.choice(rsp)
사실 난 생각나는 게 없어서 rsp라고 이름을 정했는데 options이 더 괜찮은 것 같으다...

다음은 사용자가 선택하는 칸, input을 사용해준다.

player = input("가위,바위,보 중에 하나를 선택하세요.")
  1. 컴퓨터와 사용자의 승패 판정
    if 문을 사용해서 이겼을 때/졌을 때/비겼을 경우를 나눠서 작성했다.
if player == computer_pick:
    print('비겼습니다.')
elif (player == 'Rock'and computer_pick == 'Paper') or (player == 'Scissor' and computer_pick == 'Rock') or (player == 'Paper' and computer_pick == 'Scissor'):
    print('졌습니다.')
else:
    print('이겼습니다.')
    	
        elif 부분은 어떻게 적어야 되나 생각을 했었는데, 하나하나 다 적으면 코드가 너무 길어질 것 같아서 사용자가 진 경우를 or을 사용해서 전부 적어주었다. (사진이랑 살짝 달라진 건,,, 흐린 눈)

여기까지가 꼭 들어가야 하는 기능들을 넣은 것이다. 근데 여기는 왜 while true문을 왜 안 쓰지...? 했는데 게임이 끝나면 반복하라는 이야기가 추가 과제였다... ㅋㅋㅋㅋㅋ
여기까지 구현하는 것도 꽤나 애먹었기 때문에 추가 도전 과제는 멈추었다.

그래도 추가 도전 과제까지 한 코드도 올려야지!

import random

options = ['가위', '바위', '보']


def get_player_choice():
    while True:
        player_choice = input('가위, 바위, 보 중 하나를 선택하세요: ')
        if player_choice in ['가위', '바위', '보']:
            return player_choice
        else:
            print('잘못된 입력입니다. 다시 입력하세요.')


win = 0
draw = 0
lose = 0


while True:
    player_choice = get_player_choice()

    computer_choice = random.choice(options)
    print(computer_choice)

    if (
        (player_choice == '가위' and computer_choice == '보')
            or (player_choice == '바위' and computer_choice == '가위')
            or (player_choice == '보' and computer_choice == '바위')):
        print('이겼음')
        win += 1
    elif player_choice == computer_choice:
        print('비겼음')
        draw += 1
    else:
        print('졌음')
        lose += 1

    retry = input('다시하시겠습니까? (Y/N)').lower()
    if retry == 'y':
        continue
    elif retry == 'n':
        break

print(f"승리 : {win}회 / 비김 : {draw}회 / 패배 : {lose}회")

부트 캠프 시작한 지 일주일, 파이썬 공식이라는 것을 안 지 3일 정도 된 지금,,, 사실 아직도 감이 안 잡힌다. 그래도 업다운 게임이랑 가위바위보 게임을 만들기 위한 로직을 종이에 직접 적어보니 살짝!! 정말 살짝!! 알 것 같다는 느낌만 아주 살짝!!!!! 들었다...^.^

profile
앞길에 럭키★비키만 있길 ,,,🍀🫧

0개의 댓글