🚀
탈출! 파이썬호!
  • 🚀탈출! 파이썬호!
  • 📒학습 준비
  • 🎮타이핑 게임
    • 🕹️게임 테스트
    • 💻코딩 실습
  • ✂️가위 바위 보 게임
    • 🕹️게임 테스트
    • 💻코딩 실습
Powered by GitBook
On this page
  1. 가위 바위 보 게임

코딩 실습

Previous게임 테스트

Last updated 2 years ago

타이핑 게임에서 배웠던 if 조건문과 while 반복문을 사용하여 가위 바위 보 게임을 만들어 보겠습니다.

이번엔 앞선 게임보다 더 많은 조건들을 사용하여 컴퓨터가 낸 가위 바위 보와 사용자가 입력한 가위 바위 보를 비교하여 승리와 패배 조건을 판단하여 전체 승률을 따져보는 게임을 만들어 봅니다.

리스트와 변수

import random

print('가위바위보 게임을 시작합니다!')
print("="*50)
game = ['가위', '바위', '보']
count = 0 #게임을 진행한 총 횟수를 세는 변수
win = 0 #여러분이 이긴 횟수를 세는 변수

타이핑 게임과 같이 이번에도 랜덤한 값을 사용하는 random 을 import 해 줍니다.

print() 문을 통해 게임의 간단한 시작을 화면에 출력해 주고,

컴퓨터가 제시하는 랜덤한 값을 사용하기 위해 game 이란 이름의 리스트에 '가위', '바위', '보' 를 넣어 줍니다.

진행할 게임의 횟수는 총 6번인데 이 값을 넣어 줄 count 라는 변수와 사용자가 게임에 몇 번 승리 했는지 알려 줄 win 이란 변수를 만들고 각각 숫자 값 0을 넣어 줍니다.

반복문 전체 코드

게임 횟수가 담겨있는 count 변수가 10보다 작다는 조건이 성립되면 while 반복문 안에 담겨있는 코드들이 동작하게 됩니다.

위에 다음 탭에서 반복문 안의 코드들을 자세히 살펴 봅시다.

while count < 10 :
    computer = random.choice(game)
    answer = input("\n가위 바위 보 중 무엇을 낼까? (끝내고 싶으면 '그만'을 입력)\n")
	
    if answer == "그만":
        break
    
    count = count+1
    print("\n<" + str(count) + "번째 시합 >")
    print("======결과==========")
    print("컴퓨터: " + computer)
    print("나: " + answer)
    print("==================")

    #만약 컴퓨터가 가위를 냈다면
    
    if computer == '가위' :
        if answer == '가위' :
            print('비겼다!\n')
        elif answer == '바위' :
            print('이겼다!\n')
            win = win+1
        elif answer == '보' :
            print('졌다!\n')
        else:
            print("정확한 단어를 입력해 주세요!\n")      
    elif computer == '바위' :
        if answer == '가위' :
            print('졌다!\n')
        elif answer == '바위' :
            print('비겼다!\n')
        elif answer == '보' :
            print('이겼다!\n')
            win = win+1
        else:
            print("정확한 단어를 입력해 주세요!\n")     
    elif computer == '보' :
        if answer == '가위' :
            print('이겼다!\n')
            win = win+1
        elif answer == '바위' :
            print('졌다!\n')
        elif answer == '보' :
            print('비겼다!\n')
        else:
            print("정확한 단어를 입력해 주세요!\n")   

1. 랜덤값과 입력 값

computer = random.choice(game)
answer = input("\n가위 바위 보 중 무엇을 낼까? (끝내고 싶으면 '그만'을 입력)\n")
	
if answer == "그만":
    break

count = count+1

타이핑 게임에서 랜덤으로 동물들 이름을 선택했던 명령어가 기억나시나요?

random.choice()를 통해 이번에도 game 리스트에 담겨있는 '가위', '바위', '보' 중 하나를 랜덤으로 선택하여 대결에서 컴퓨터가 제시하게 할 것 입니다.

answer 변수에는 input() 명령어를 통해 화면에서 참여자에게 값을 입력 받게 합니다.

input() 을 사용할 때 ( )안에 원하는 문장을 함께 입력하여 사용할 수 있습니다.

만약 참여자가 '그만'이란 값을 입력하면 break 명령문을 통해 while 반복문은 종료되게 됩니다.

마지막으로 다음 게임을 위해 count 변수에 1을 더해 줍니다.

count = count + 1 은 count += 1 로 줄여서 작성할 수 있습니다.

2. 결과 출력

 print("\n<" + str(count) + "번째 시합 >")
 print("======결과==========")
 print("컴퓨터: " + computer)
 print("나: " + answer)
 print("==================")

print() 문을 통해 화면에 결과를 출력해 줍니다.

print() 문 안에 있는 문장 중 \n이 무엇인지 궁금한 분이 계신가요?

print() 문은 출력 후 자동으로 다음 줄로 커서가 이동하게 되는데 print() 문 안에 \n을 입력하게 되면 다음줄로 이동하게 되는 결과를 얻게 됩니다.

(어떤 차이가 있는지 보이시나요?)

결과 비교

#만약 컴퓨터가 가위를 냈다면
if computer == '가위' :
    if answer == '가위' :
        print('비겼다!\n')
    elif answer == '바위' :
        print('이겼다!\n')
        win = win+1
    elif answer == '보' :
        print('졌다!\n')
    else:
        print("정확한 단어를 입력해 주세요!\n")
#만약 컴퓨터가 바위를 냈다면              
elif computer == '바위' :
    if answer == '가위' :
        print('졌다!\n')
    elif answer == '바위' :
        print('비겼다!\n')
    elif answer == '보' :
        print('이겼다!\n')
        win = win+1
    else:
        print("정확한 단어를 입력해 주세요!\n")
#만약 컴퓨터가 보를 냈다면             
elif computer == '보' :
    if answer == '가위' :
        print('이겼다!\n')
        win = win+1
    elif answer == '바위' :
        print('졌다!\n')
    elif answer == '보' :
        print('비겼다!\n')
    else:
        print("정확한 단어를 입력해 주세요!\n")            

if조건문은 앞에 타이핑 게임에서 사용했지만 아래 elif는 무엇인가요? 라고 질문하는 소리가 들리네요.

여러가지 조건들을 동시에 판단해야 할 때 if 조건문과 함께 elif와 else 조건문이 함께 사용 됩니다.

elif 는 else if 의 의미를 가지는데 만약 이 조건이 아니라 다른 조건이 맞다면 아래의 코드를 실행하세요 라는 의미 입니다.

제일 먼저 상단에 있는 if 조건들을 살펴 보고 아니라면 아래에 있는 elif 조건들을, 그것도 아니라면 마지막으로 else 에 있는 코드들을 실행하는 순서 입니다.

조금 복잡할 수 있지만 여러번 사용하다 보면 그 의미들을 이해할 수 있을 거에요!

if computer == '가위':
    실행 코드
elif computer == '바위':    
    실행 코드
elif computer == '보':
    실행 코드         

컴퓨터가 가위를 내거나 바위 또는 보를 낼 수 있겠죠?(랜덤으로 선택된 값)

먼저 큰 틀은 위의 코드 처럼 3가지 조건입니다.

그리고 작은 단위의 사용자가 입력한 값들을 비교하는 조건들이 들어 가게 됩니다.

if answer == '가위' :
    print('비겼다!\n')
elif answer == '바위' :
    print('이겼다!\n')
    win = win+1
elif answer == '보' :
    print('졌다!\n')
else:
    print("정확한 단어를 입력해 주세요!\n")

컴퓨터가 가위니까 사용자도 가위면 당연히 게임은 무승부 겠죠?

이렇게 3가지 경우와 가위 바위 보 이외에 다른 값을 입력하게 되면 else로 넘어가 정확한 단어를 입력해 달라고 출력 후 다시 while 반복문으로 이동하게 됩니다.

만약 사용자가 바위를 입력 했다면 승리하게 되겠죠? 이때 승리 값이 담길 win 변수에 1를 더해 줍니다.

정리해 보자면 먼저 큰틀의 조건(컴퓨터의 값 - 가위 바위 보)을 판단하고 그 안의 사용자의 값을(가위 바위 보) 비교하여 승리와 패배를 판단하여 print() 문을 통해 화면에 알려 줍니다.

print("\n========총 대결 결과=================")
print(count,'번 승부 중', win,'번 이겼습니다!')
print("=====================================")

if win >= 5:
  print("미션 클리어!")
else:
  print("다시 도전해 주세요!")

마지막으로 print() 문으로 결과를 출력해 줍니다.

count 변수와 win 변수에 어떤 값이 담겨 있는지 알고 있죠?

반복문을 실행할 때 마다 증가하는 count 변수는 게임의 횟수를, 가위 바위 보 대결에서 승리할 때 마다 승리 결과 횟수를 win변수에 보관 하였습니다.

대결에서 참여가자 5번 이상 승리 하였다면 "미션 클리어"를 5번 미만이라면 "다시 도전해 주세요" 문구를 화면에서 보여 주게 조건문을 작성해 줍니다.

✂️
💻