프로그래밍 언어/Python(파이썬)
가위! 바위! 보! 게임 만들기
kky2
2022. 10. 24. 15:20
# Python 3일만 배우면 만들 수 있는 게임
# 가위! 바위! 보!
* 연산자, 조건문, 반복문을 활용하여 다음과 같은 게임을 만들어 봅시다.
코드를 작성하기 앞서 어떤 순서로 진행될지 논리적 흐름을 정해봅시다.
* 흐름
- 사용자로부터 가위, 바위, 보 중 하나를 입력받는다.
- 컴퓨터는 가위, 바위, 보 중 하나를 랜덤으로 갖는다.
- 사용자와 컴퓨터가 무엇을 냈는지 비교한다.
- 우리가 아는 게임 규칙(가위 > 보, 바위 > 가위, 보 > 바위)대로 승무패를 확인한다.
- 승무패에 따라 출력문을 출력한다.
- 게임은 사용자가 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. 출력결과
* 재밌는 예제를 통해서 쉽게 배워봅시다. - 끝 -