본문 바로가기
Python/pygame

게임만들기-오프닝(베스킨라빈스 게임)

by To올라운더 2024. 2. 1.
반응형

당연한 이야기 이지만 python으로도 게임을 만들 수 있다.

 

어느 분야든 보편적이고 특화된 언어가 있을 뿐이지,

장인은 도구를 탓하지 않듯, 

어떤 언어든 게임을 만들 수 있는데

단지 고려해야할 사항이 좀 더 많고

좀 더 편리한 언어가 있을 뿐이다.

 

단순히 생각해보면 게임은 그래픽이 필수 요소는 아니다.

3자리 숫자를 맞추는 게임에서 부터

31을 부르면 틀리는 베스킨라빈스 같은 게임 등은 

몇 가지 조건문만 만들 수 있으면 쉽게 작성할 수 있는 게임들이다.

 

말이 나온 김에 간단히 2가지 중 베스킨라빈스 게임을 만들어 보자.

 

 

1) 베스킨라빈스 게임 (31)

 - 게임의 진행 방법은 다들 아는 것처럼 2명이 교차로 1부터 숫자를 이야기 하는데 

   자신의 차례에서 최소 1개에서 최대 3개의 숫자를 이야기해야한다.

 - 그리고 31일을 말하는 플레이어가 지게되는 게임이다.

 - 혼자서도 즐길 수 있게 컴퓨터와 게임을 진행해보자.

 

import random # 컴퓨터가 임의의 숫자를 선택할 수 있도록 사용


print('베스킨라빈스 게임을 시작합니다.')
call_no = 0 # 시작 숫자


call_turn = random.randint(1, 2) # 1은 플레이어, 2는 컴퓨터 차례를 나타냄

while True :
    if call_turn == 1:
        print('플레이어의 차례입니다.')


    else: 
        print('컴퓨터의 차례입니다.')    

    if call_no > 30:
        break # call_no 30 초과 시 while문 종료 / while 조건에 입력도 가능 

if call_turn == 1:
    print('컴퓨터의 승리입니다.')
else:
    print('플레이어의 승리입니다.')

 

 - random 모듈을 통해 1.컴퓨터와 플레이어 간의 선공을 정하거나, 2.컴퓨터가 몇개의 숫자를 임의로 부를지를 정한다.

 - call_turn 이 1일 때는 플레이어(사용자), 2일 때는 컴퓨터로 구분하고

   call_no가 31미만일 때 까지 반복한다.(아직 미작성)

 - call_no가 31이 되어 초과되게 되면 해당 차례의 플레이어 또는 컴퓨터가 패배한다.

 - 이제 위의 코드에 플레이어와 컴퓨터 간의 숫자를 입력하고 차례를 변경하는 코드를 추가해보겠다.

 

 

2) 기능 추가하기

import random # 컴퓨터가 임의의 숫자를 선택할 수 있도록 사용


print('베스킨라빈스 게임을 시작합니다.')
call_no = 0 # 시작 숫자
call_turn = random.randint(1, 2) # 1은 플레이어, 2는 컴퓨터 차례를 나타냄

while True :
    if call_turn == 1:
        print('플레이어의 차례입니다.')

        count = int(input('몇 개의 숫자를 부르시겠습니까? (1~3)'))
        
        print('플레이어가 부른 숫자는 ')
        for i in range(0, count):
            call_no += 1
            print(f'{call_no}', end=' ')
        
            if call_no > 30: # for 문 탈출용 break
                break
        print('입니다.')

        

    else: 
        print('컴퓨터의 차례입니다.')    

        count = random.randint(1, 3)

        print('컴퓨터가 부른 숫자는 ')
        for i in range(0, count):
            call_no += 1
            print(f'{call_no}', end=' ')

            if call_no > 30: # for 문 탈출용 break
                break
        print('입니다.')

    if call_no > 30: # while 문 탈출용 break
        break

    if call_turn == 1:
        call_turn = 2
    else:
        call_turn = 1
        

print('\n\n**************')
if call_turn == 1:
    print('컴퓨터의 승리입니다.')
else:
    print('플레이어의 승리입니다.')

 

 - 플레이어와 컴퓨터가 call_turn 값을 기준으로 번갈아 가며 숫자를 1개에서 3개씩 부른다.

 - 테스트 시 처음 선공을 하는 순서가 random으로 설정되어 플레이어가 선공이 될 수도 있고 그림과 같이 컴퓨터가 선공이 될 수도 있다.

 - 그리고 randint를 통해 1개에서 3개의 숫자를 부르게되는데,

    마지막 31일 부르게 되면 해당 차례의 플레이어 또는 컴퓨터가 패배한다.

 

 

야구게임도 어렵지 않다. 입력 받은 3자리 숫자를 슬라이싱 하고, 조건문을 통해 비교하면된다.

 

아무튼 사설이 길어졌지만, 결론은 어떻게 코드를 작성하는가이지,

어떤 언어든 게임의 형태를 만들 수 있다는 것이다.

 

하지만 범용성 높은 python은 pygame이라는 좋은 모듈이 있기 때문에

우리는 이번 프로젝트에서 pygame을 알아보며 원하는 게임을 만들어 볼 예정이다.

반응형