본문 바로가기
프로그램

[파이썬] 문제 : 가위,바위,보 게임 코드 해석

by 오디세이99 2022. 11. 13.
728x90
반응형

 

from random import *                # 난수용 패키지 설정. 아래 코드에서 choice 함수 사용

kind = ["","가위","바위","보"]               # 가위,바위,보 리스트 생성. 인덱스 0 에 ""은 사용하지 않기 위함
man = int(input("<1.가위 2,바위 3.보>: "))   # 입력 받기. 1,2,3 수로 입력 받음
computer = choice([1,2,3])                   # 리스트 [1,2,3] 원소 중 하나를 임의의로 램덤하게 선택함

print("사람: ",kind[man], ", 컴퓨터: ",kind[computer])  # 사람 입력과 컴퓨터 선택을 출력

if man - computer == 0:         # 두 수가 같다면 같은 가위,바위,보를 선택한 것이므로 무승부
    print("서로 비겼습니다.")
elif man - computer in [-2, 1]: # 여기서 in은 오른쪽의 리스트에 같은 원소가 있느냐를 찾는 것입니다.-2는 
    print("사람이 이겼습니다.")   # -2는 사람=가위(1), 컴퓨터=보(3) 이 됨니다. 1은 사람=바위,컴퓨터=가위 또는 사람=보,컴퓨터=바위 일때
else:                             # 무승부도 아니고 사람이 이긴것도 아니면 컴퓨터 승리
    print("컴퓨터가 이겼습니다.")

결과

<1.가위 2,바위 3.보>: 1
사람:  가위 , 컴퓨터:  바위
컴퓨터가 이겼습니다.

 

 

가위,바위,보 게임

import random

game = ['가위','바위','보']                          # 리스트 사용

def my_game(m, c):                                   # 승리 판단 함수
    rtn = ''
    print("컴퓨터 :", c)
    if m == c:
        print("비겼습니다.")
        rtn = 't'
    elif m == "가위" and c == "보" or m == '바위' and c == '가위' or m == '보' and c == '바위':
        print("당신이 이겼습니다.")
        rtn = 'v'
    else:
        print("컴퓨터가 이겼습니다.")
        rtn = 'd'
    
    return rtn
    
game_cnt = 0                                             # 게임 횟수
victory_cnt = 0                                          # 승리 횟수
defeat_cnt = 0                                           # 패배 횟수
tie_cnt = 0                                              # 무승부 횟수
while True:                                             # 반복문 사용
    my = input("가위 / 바위 / 보 중 하나를 입력하세요(Enter:종료): ")    # 입력 받기
    if my == '':                                         # 입력이 'endter면 입력이 없기 때문에('') 종료
        print(f"총 게임수:{game_cnt} 승리:{victory_cnt} / 퍠배:{defeat_cnt} / 무승부:{tie_cnt}")   # 종료시 게임 현황 출력
        break
    
    computer = random.choice(game)                        # 컴퓨터는 랜덤하게 가위,바위,보 선택
    
    rtn = my_game(my, computer)                           # 승리 판단 함수 실행
    
    if rtn == 'v':                                        # 승리 Count
        victory_cnt += 1
    elif rtn == 'd':                                      # 패배 Count
        defeat_cnt += 1
    elif rtn == 't':                                      # 무승부 Count
        tie_cnt += 1

    game_cnt += 1                                          # 게임횟수 증가

728x90
반응형

댓글