본문 바로가기

Python

[기초] while문 활용해 가위바위보 게임 만들기

1. 작업 계획

① 사용자에게 가위, 바위, 보 정보 입력받기

- while, input()

 

② 컴퓨터는 랜덤으로 가위, 바위, 보 선택

- random.choice

 

③ 사용자 승패 여부 가리기

- 사용자 입력값과 컴퓨터 랜덤값 비교

 

④ 게임 실행

- 위에서 정의해둔 함수 모두 불러와 이용

- while, score 계산, 승패여부 출력

- 최종 게임 score 출력

 

 

2. Code 

 

# 라이브러리
import random

# user가 선택한 값 입력받기
def get_user_choice():
    while True:
        user_choice = input("가위, 바위, 보 중에서 선택하세요 (게임 종료: '게임종료'): ")
        if user_choice in ['가위', '바위', '보', '게임종료']:
            return user_choice
        else:
            print("유효한 선택지를 입력해주세요.")

# 컴퓨터 값 추출
def get_computer_choice():
    choices = ['가위', '바위', '보']
    return random.choice(choices)

# 사용자 승패 여부 결정
def determine_winner(user_choice, computer_choice):
    if user_choice == computer_choice:
        return "비겼습니다!"
    elif (user_choice == '가위' and computer_choice == '보') or (user_choice == '바위' and computer_choice == '가위') or (user_choice == '보' and computer_choice == '바위'):
        return "사용자가 이겼습니다!"
    else:
        return "컴퓨터가 이겼습니다!"

# 게임 실행
def play_game():
    user_score = 0
    computer_score = 0
    tie_score = 0

    while True:
    	# 사용자 값 불러오기
        user_choice = get_user_choice()
        
        if user_choice == '게임종료':
            break

		# 컴퓨터 값 불러오기
        computer_choice = get_computer_choice()

        print(f"사용자: {user_choice}")
        print(f"컴퓨터: {computer_choice}")
		
        # 승패 여부 불러오기
        result = determine_winner(user_choice, computer_choice)
        print(result)
		
        # 승점 계산
        if result == "사용자가 이겼습니다!":
            user_score += 1
        elif result == "컴퓨터가 이겼습니다!":
            computer_score += 1
        else :
            tie_score += 1
        
        # 결과 출력
        print(f"현재 점수 - 승: {user_score}, 패: {computer_score}, 무승부: {tie_score}")
        print()
	
    # 게임 종료시 최종 게임 스코어 출력
    print("게임 종료")
    print(f"최종 점수 - 승: {user_score}, 패: {computer_score}, 무승부: {tie_score}")

play_game()

'Python' 카테고리의 다른 글

[Flask] 생활코딩 강의 요약  (0) 2023.06.26
[기초] Class 생성과 상속  (0) 2023.05.27