본문 바로가기
python

2022.05.20 python 가위바위보 게임

by 해맑은 코린이 2022. 5. 20.

2022.05.20 python 가위바위보 게임_정리노트



오늘은 -!! 파이썬 듣다가 나는 무식하게 풀었지만, solution 을 보니까 다르게 풀었길래 ㅎ...

 

정리하며 if 나 정리해봅시다-!!

 

문제

가위바위보 게임을 해보자!

input 으로 숫자로 사용자의 가위,바위,보 값을 받는다.

0 은 바위

1 은 보

2 는 가위


가위바위보 게임 느낌을 내기 위해서 아스키코드 이모티콘 가지고 와서 사용함.

 

rock-paper-scissors ascii 라고 치면 다른 분들도 많이 있고, 내꺼 복사해서 써도 됨.

https://emojicombos.com/ASCII-Emoticons

 

List of All ASCII Emoticons | ¯\_(ツ)_/¯ | Copy & Paste

............................................________........................ ....................................,.-‘”...................``~.,.................. .............................,.-”...................................“-.,............ ..

emojicombos.com

요론 이모티콘 다덜 잘 만들어놨더라구 여기서 해서 좀 더 게임처럼 만들기!

 

먼저 나는 그냥 가위 바위 보 다...조건을 걸어서 썼다 ㅎㅁㅎ..

 

내가 푼 코드

import random    // 랜덤으로 컴퓨터를 돌리기 위해서 

//재밌는 아스키코드

rock = '''
    _______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''

paper = '''
    _______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''

scissors = '''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''


print("Hello this games")
user = input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors. ")

//리스트에 아스키코드들 가져와주기
games_list = [rock, paper, scissors]

// user input 값 정수로 변환
user = int(user)

// random 모듈을 import 해와서 0,1,2 중 랜덤으로 정수 뽑아주기
random_num = random.randint(0,2)
// games_list 에서 랜덤으로 뽑아온 정수번째의 아스키코드 보여주기
computer = games_list[random_num]

// user 가 선택한 아스키코드(모양) 보여주기 + \n으로 이쁘게 한줄씩 띄워줌
print("\nUser\n"+games_list[user])
//computer 가 랜덤으로 가져온 아스키코드(모양) 보여주기 + \n으로 이쁘게 한줄씩 띄워줌
print("\nComputer\n" + computer)

// user가 묵이라면
if user == 0:
	// computer 묵이라면 비긴거니까 Draw print
	if random_num == 0:
		print("Draw! Let's play again")
     // computer 가 보라면 user 가 진거니까 lose print
	elif random_num == 1:
		print("You lose...")
     // computer 가 가위라면 user가 이긴거니까 win print
	else:
		print("You Win!")

// user 가 보라면 위의 if 문과 동일하게
elif user == 1:
	if random_num == 0:
		print("You Win!")
	elif random_num == 1:
		print("Draw! Let's play again")
	else:
		print("You lose...")
        
// 마지막!! user 가 가위라면 위의 내용과 동일하게 !
else:
	if random_num == 0:
		print("You lose..")
	elif random_num == 1:
		print("You win!")
	else:
		print("Draw! Let's play again")

ㅎㅎ... 무식하게도 풀었네 

실행 결과 예시

 

 

 

 

 

이번 챌린지 조금 어렵다 해서 ?? 왜 어렵지 했던 내가 바보다.. 해결 코드를 봅시다...!

 

 

 

 

해결 코드

import random

rock = '''
    _______
---'   ____)
      (_____)
      (_____)
      (____)
---.__(___)
'''

paper = '''
    _______
---'   ____)____
          ______)
          _______)
         _______)
---.__________)
'''

scissors = '''
    _______
---'   ____)____
          ______)
       __________)
      (____)
---.__(___)
'''
game_images = [rock, paper, scissors]

user_choice = int(input("What do you choose? Type 0 for Rock, 1 for Paper or 2 for Scissors.\n"))

// 유저가 잘못 입력한 코드까지 에러처리 해주고 있다!
if user_choice >= 3 or user_choice < 0: 
    print("You typed an invalid number, you lose!") 
// 유저가 잘못 입력하지 않으면 user의 아스키 코드(모양을) print
else:
    print(game_images[user_choice])
	
    // computer 의 random int
    computer_choice = random.randint(0, 2)
    print("Computer chose:")
    // random 으로 반환한 코드의 아스키코드(모양) print
    print(game_images[computer_choice])

	// 3. 밑에서 수가 큰 것으로 비교하지 못하는 경우는 user 가 0인 경우는 큰 것으로 비교하지 못함.
    // 그래서 0인 바위만 win print
    if user_choice == 0 and computer_choice == 2:
        print("You win!") 
    // 4. 마찬가지로 computer 가 0인 경우 더 큰 수는 없기에 따로 lose print
    elif computer_choice == 0 and user_choice == 2:
        print("You lose")
    // 1. computer 가 선택한 정수가 user 가 선택한 정수보다 크면 (가위 - 보, 보 - 바위)
    // lose print
    elif computer_choice > user_choice:
        print("You lose")
    // 2. user 가 선택한 정수가 computer 가 선택한 정수보다 크면 (보 - 바위 , 가위 - 보)
    elif user_choice > computer_choice:
        print("You win!")
    // 5. user 가 선택한 정수와 computer 가 선택한 정수가 같으면 비김 처리
    elif computer_choice == user_choice:
        print("It's a draw")

이렇게 대소 구분을 통해 풀었더라구..허허 if 순서와는 다르게 나혼자 이해하려고 1-5번 순으로 적었다..! 이런 흐름이었군 하면서 기본적인 잘못 입력된 값 예외 처리까지..! 정리하면 좋을 것 같아 이렇게 적어봤다 굿굿.

 

 

실행 결과 예시

 


간단한 포스팅만 점점 늘어나는 나의 블로그.. 우당탕탕 다시 돌아가서 당황스럽겠지만 시리즈도 아니고 내가 공부하는 거 기록하는 건데 머 어때 ㅎㅁㅎ 하면서 오늘의 포스팅 끝!

댓글