반응형

파이썬 기본 문법으로 간단한 텍스트RPG  게임을 구현해보겠습니다. 

목차 (원하는 부분을 클릭하시면 바로 이동하실 수 있습니다~)
1. 개발환경 IDE
2. 코드
3. 설명 (IDE 별 화면 지우기 -> 접은 글)
4. 정리 및 참고 사이트

 

1. 개발환경 IDE

IDE : Visual Studio Code, Anaconda Jupyter Notebook

Python : 3.9 ~ 3.11

VS코드로 디버깅, 주피터 노트북으로 코딩을 하는 게 목표이긴 합니다만,, 왔다갔다하는 게 번거로울 것 같아 하나로 진행할 수도 있습니다.

게임 시작을 위한 main.py 와 기타 테스트를 위해 만들어둔 test.py

 

그 외에 좀 더 게임스럽게 꾸며주기 위해 text art를 이용할 예정입니다.

텍스트 아트란 문자들을 가지고 그림, 큰 글자등을 형상화하는 것을 말합니다.

online을 다음 과 같이 표현하거나, 동물, 캐릭터를 아스키 문자를 이용하여 만드는 것입니다.
따라서 text art 또는 ASCII art 라고도 합니다.
online의 text art

 

2. 코드

 

import time
import random
import os

def game_start():
    os.system('cls')
    print("""
            =====================================================
                 _                     ____    ____     ____ 
                | |  _   _   _ __     |  _ \  |  _ \   / ___|
             _  | | | | | | | '_ \    | |_) | | |_) | | |  _ 
            | |_| | | |_| | | | | |   |  _ <  |  __/  | |_| |
             \___/   \__,_| |_| |_|   |_| \_\ |_|      \____|
            =====================================================
              ___            _   _                
             / _ \   _ __   | | (_)  _ __     ___ 
            | | | | | '_ \  | | | | | '_ \   / _ \\
            | |_| | | | | | | | | | | | | | |  __/
             \___/  |_| |_| |_| |_| |_| |_|  \___|     
            =====================================================                                                                 
    """)
    time.sleep(2)
    os.system("cls")
    print("Jun RPG에 오신 것을 환영합니다.")
    while(1):
        print("원하는 메뉴의 번호를 입력한 다음 Enter키를 누르세요.")
        print("1.게임시작")
        print("2.게임설명")
        print("3.게임종료")
        command = input(">>")
        if command =='1':
            run()
        elif command =='2':
            tutorial()
        elif command == '3':
            print("이용해주셔서 감사합니다.")
            time.sleep(1.5)
            break
        else:
            print("잘못 누르셨습니다.")
            print()

if __name__ == "__main__":
    game_start()

 

3. 설명

라이브러리

import time
import random
import os

time은 메세지 창 등의 전환을 할 때 시간 간격을 두기 위해 사용합니다.

random은 게임 중 확률적인 요소를 만드는 데 사용합니다.

 

os는 무엇보다 아래 코드를 사용하기 위해 넣어주었습니다.

os.system('cls')

system의 cls명령어를 사용한다는 뜻인데, cls는 화면을 지우는 명령어 입니다.

즉, 화면을 넘어갈 때 글자들이 위로 올라가지 않고 새로운 화면이 나타나는 것 처럼 연출해주기 위해 넣어주었습니다.

IDE에 따라서 화면을 지우는 코드가 다르므로  아래의 접은 글을 확인해 주시면 되겠습니다.

더보기

IDE별 화면 지우는 법

 

*주피터 노트북

from IPython.display import clear_output 

clear_output

*구글 코랩

from google.colab import output

output.clear()

*윈도우 & 리눅스

import os

os.system('cls') #리눅스는 cls 대신 clear 사용

게임 시작을 위해 처음에 게임 로고가 보이면서 유저를 반겨줍니다.

복사 붙여넣기 시 글자간의 띄어쓰기가 조금 씩 달라져 깨져보일 수 있습니다.

큰 글자로 만드는 법은 4. 정리 및 참고 사이트  를 확인해주시면 되겠습니다.

def game_start():
    os.system('cls')
    print("""
            =====================================================
                 _                     ____    ____     ____ 
                | |  _   _   _ __     |  _ \  |  _ \   / ___|
             _  | | | | | | | '_ \    | |_) | | |_) | | |  _ 
            | |_| | | |_| | | | | |   |  _ <  |  __/  | |_| |
             \___/   \__,_| |_| |_|   |_| \_\ |_|      \____|
            =====================================================
              ___            _   _                
             / _ \   _ __   | | (_)  _ __     ___ 
            | | | | | '_ \  | | | | | '_ \   / _ \\
            | |_| | | | | | | | | | | | | | |  __/
             \___/  |_| |_| |_| |_| |_| |_|  \___|     
            =====================================================                                                                 
    """)
    time.sleep(2)
    os.system("cls")
    print("Jun RPG에 오신 것을 환영합니다.")

 

유저가 게임 메뉴를 선택할 수 있도록 메뉴창을 보여줍니다.

이때 while문을 이용해 오타가 났어도 에러가 나지 않도록 해줍니다.

def game_start():
    .
    .
    생략
    .
    .
    while(1):
        print("원하는 메뉴의 번호를 입력한 다음 Enter키를 누르세요.")
        print("1.게임시작")
        print("2.게임설명")
        print("3.게임종료")
        command = input(">>")
        if command =='1':
            run()
        elif command =='2':
            tutorial()
        elif command == '3':
            print("이용해주셔서 감사합니다.")
            time.sleep(1.5)
            break
        else:
            print("잘못 누르셨습니다.")
            print()

각 번호에 따른 함수들은 아직 만들지 않고 어떤 기능을 할 지, 형태만 잡아주었습니다.

run() 게임 시작 함수. 모듈에서 만들 지 고민중입니다.

tutorial() 게임 설명 함수. 마찬가지로 모듈로 만들 지 고민중입니다.

 

4. 정리 및 참고 사이트

첫 시작인 만큼 일단 약간만 만들어 보았습니다.

꼭 똑같이 하지 않으셔도 되고 아이디어가 넘치신다면 멈추지 마시고 먼저 진행하셔도 좋습니다!

https://www.messletters.com/en/big-text/
text art 사이트
파란 줄에 원하는 글자를 입력하고
standard로 해주시면 자동으로 그 아래 글자가 완성되어 나옵니다.
전체 선택 후 복사&붙여넣기로 이용하시면 되겠습니다.

 

질문, 건의사항은 댓글 남겨주시면 빠르게 확인하여 답변드리도록 하겠습니다. 감사합니다.

 

 

반응형
Dvlp.Jun