파이썬 기본 문법으로 간단한 텍스트RPG 게임을 구현해보겠습니다.
목차 (원하는 부분을 클릭하시면 바로 이동하실 수 있습니다~)
1. 개발환경 IDE
2. 코드
3. 설명 (IDE 별 화면 지우기 -> 접은 글)
4. 정리 및 참고 사이트
1. 개발환경 IDE
IDE : Visual Studio Code, Anaconda Jupyter Notebook
Python : 3.9 ~ 3.11
VS코드로 디버깅, 주피터 노트북으로 코딩을 하는 게 목표이긴 합니다만,, 왔다갔다하는 게 번거로울 것 같아 하나로 진행할 수도 있습니다.
그 외에 좀 더 게임스럽게 꾸며주기 위해 text art를 이용할 예정입니다.
텍스트 아트란 문자들을 가지고 그림, 큰 글자등을 형상화하는 것을 말합니다.
online을 다음 과 같이 표현하거나, 동물, 캐릭터를 아스키 문자를 이용하여 만드는 것입니다.
따라서 text art 또는 ASCII 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/
파란 줄에 원하는 글자를 입력하고
standard로 해주시면 자동으로 그 아래 글자가 완성되어 나옵니다.
전체 선택 후 복사&붙여넣기로 이용하시면 되겠습니다.
질문, 건의사항은 댓글 남겨주시면 빠르게 확인하여 답변드리도록 하겠습니다. 감사합니다.
'[파이썬]Python > TextRPG게임' 카테고리의 다른 글
[파이썬] TextRPG 게임 만들기 #5.fin | 게임 엔딩, 몬스터 전투, 마무리 (0) | 2023.02.02 |
---|---|
[파이썬] TextRPG 게임 만들기 #4 | 탐험 진행 모듈, 튜토리얼, 스토리 (0) | 2023.01.18 |
[파이썬] TextRPG 게임 만들기 #3 | 게임 변수 선언, 스토리 진행 (0) | 2023.01.15 |
[파이썬] TextRPG 게임 만들기#2 | 모듈 나누기, 튜토리얼, 스토리 (3) | 2023.01.04 |
[파이썬] TextRPG 게임 만들기#0 | GUI 없이 만드는 게임 계획 (0) | 2023.01.02 |