상세 컨텐츠

본문 제목

가위! 바위! 보! 게임 만들기

프로그래밍 언어/Python(파이썬)

by kky2 2022. 10. 24. 15:20

본문

# Python 3일만 배우면 만들 수 있는 게임

# 가위! 바위! 보!

 

*  연산자, 조건문, 반복문을 활용하여 다음과 같은 게임을 만들어 봅시다.

 

 

코드를 작성하기 앞서 어떤 순서로 진행될지 논리적 흐름을 정해봅시다.

* 흐름

  1. 사용자로부터 가위, 바위, 보 중 하나를 입력받는다.
  2. 컴퓨터는 가위, 바위, 보 중 하나를 랜덤으로 갖는다.
  3. 사용자와 컴퓨터가 무엇을 냈는지 비교한다.
  4. 우리가 아는 게임 규칙(가위 > 보, 바위 > 가위, 보 > 바위)대로 승무패를 확인한다.
  5. 승무패에 따라 출력문을 출력한다.
  6. 게임은 사용자가 3승을 할 때까지 반복하며, 3승을 하면 게임이 종료된다.

자, 순서가 정해졌으니 코드로 옮겨볼까요?

 

A. 사용할 라이브러리 import 하기

  •     컴퓨터가 가위, 바위, 보 중 랜덤으로 하나를 가져야 하기 때문에 random 이라는 라이브러리를 import 합니다.
  •     마찬가지로, 가위! 바위! 보! 라는 시각적 delay 효과를 주기 위해 time도 import 합시다.

 

B. 변수 정하기

  •     count = 0                              →    승수를 저장하는 변수
  •     game = ['가위', '바위', '보']    →    문자열 저장하는 리스트
  •     (리스트는 데이터들을 잘 관리하기 위해 묶어서 관리하는 자료형 중 하나입니다.)
  •     randomNum                         →    random객체를 통해 발생된 숫자를 저장하는 변수(1 ~ 3)
  •     com                                      →    컴퓨터가 낼것
  •     player                                   →    사용자가 낼것

 

C. 반복문

  •     위에서 정해놓은 순서대로 반복이 되도록 실행될 내용의 흐름대로 코딩합니다.
  •     연산자는 기억하시나요?  ( ' = ' 은 값 대입, ' == ' 은 값 비교입니다.)

 

D. 소스코드 작성

import random
import time

# 승수를 저장하는 변수
count = 0
# 가위! 바위! 보! 효과에 사용할 문자열을 저장하는 변수
game = ['가위', '바위', '보']

#반복문 시작
while True:
    '''3승 할 때 까지 게임 반복(count == 3 이면 종료)'''
    
    # 컴퓨터가 무엇을 낼지 랜덤으로 결정
    # randint함수를 통해 1 ~ 3의 랜덤한 숫자를 발생시키고 숫자마다 가위, 바위, 보 가 결정
    randomNum = random.randint(1, 3)
    if randomNum == 1 :
        com = game[0]    #'가위'
    elif randomNum == 2 :
        com = game[1]    #'바위'
    elif randomNum == 3 :
        com = game[2]    #'보'
    
    # 사용자의 가위, 바위, 보 입력
    player = input("[ 가위, 바위, 보 중 하나를 입력하세요 ]: ")
    
    # 가위! 바위! 보! 효과
    # time.sleep 은 입력한 시간(초)만큼의 딜레이를 주는 함수 
    for gbb in game:
        print(gbb, end='! ')
        time.sleep(1)
    
    # 컴퓨터와 유저의 게임 결과 비교
    # 조건은 승, 무, 패 로 구분되며 각 경우에 따라 출력문을 출력
    if player == '가위' or player == '보' or player== '바위' :
    
        # 사용자가 졌을 경우
        if (   (com == '가위' and player == '보') 
            or (com == '바위' and player == '가위') 
            or (com == '보' and player == '바위')    ) :
            print('com=' + com + '  player=' + player + ' is [ com win ]')
        
        # 사용자가 이겼을 경우
        elif ( (com == '보' and player == '가위') 
            or (com == '가위' and player == '바위') 
            or (com == '바위' and player == '보')    ) :
            print('com=' + com + '  player=' + player + ' is [ player win ]')
            
            # 승리시 count +1
            count += 1
            
            # 승수가 3이상일 경우 반복문을 종료
            if count >= 3 :
                print("== player가 3승으로 종료합니다. ==")
                break

        # 사용자와 컴퓨터가 무승부일 경우
        else :
            print('com=' + com + '  player=' + player + ' is [ draw ]')
 
    else :
        #입력을 잘못할 경우 건너뛰기
        print("잘못 입력했습니다.")
        continue
        
    #몇승째인지 출력
    print('※승수: %d/3 \n' % count)

 

 

 

E. 출력결과

실행환경 : Jupyter NoteBook (anaconda3)

* 재밌는 예제를 통해서 쉽게 배워봅시다.  - 끝 -

관련글 더보기

댓글 영역