반응형
목차 (원하는 부분을 클릭하시면 바로 이동하실 수 있습니다~)
1. 코드소개
2. 코드설명
오늘은 이전 모듈나누기, 튜토리얼, 스토리 에 이어 실제 게임이 진행되는 모듈에서 변수 선언과 함께 계획한 스토리대로 프로그램이 진행되도록 해주겠습니다.
1. 코드소개
game.py
import time
import os
def start():
print("""
▓▓▒▒▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓
░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒▒▒░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░
░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒
░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒░░░░▒▒░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒
▒▒▓▓▓▓▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▓▓▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒░░ ░░▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓
░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░ ░░▒▒▒▒░░░░░░░░░░▒▒░░░░
▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓▒▒░░ ░░░░▒▒░░▒▒▒▒▒▒▒▒▓▓▒▒▒▒
▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒░░░░ ░░░░▒▒▒▒▒▒▒▒▒▒▓▓░░▒▒
▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓░░░░ ░░▒▒▓▓▓▓▓▓▓▓▒▒▓▓
░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░▒▒░░ ░░▒▒▒▒░░░░░░░░░░
░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒░░ ░░▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒
░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒░░░░░░░░▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒
▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓▒▒▒▒▓▓▓▓▓▓▓▓▓▓▒▒▓▓▓▓▓▓▓▓
░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░░░░░░░░░▒▒░░████████████░░░░░░░░▒▒░░░░
▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▒▒░░▒▒▓▓▓▓██▓▓▒▒▒▒▒▒▒▒▒▒▓▓░░▒▒
▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▓▓░░░░░░▒▒▒▒▓▓░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓██▒▒▓▓▒▒▒▒▒▒▓▓░░▒▒
▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒▒░░▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓████▓▓▓▓▒▒▒▒▒▒▓▓▒▒▒▒
▒▒▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒░░░░░░▒▒░░▒▒░░░░░░░░░░░░▒▒▒▒▓▓▒▒▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░▒▒
""")
print("광산이 무너지면서 완전히 고립된 것 같다..")
time.sleep(2)
print("1시간이 다 되도록 입구 벽을 두드려봤지만 아무 반응도 없는걸 봐선,,")
time.sleep(2)
print("여기에 아무도 없다고 생각하나..?")
time.sleep(2)
print("아무래도 당분간 버텨야겠는데,,")
time.sleep(2)
print("일단 뭘 해야하지..?")
time.sleep(2)
print("듣기로는 2번 갱도부터는 아직 공사가 끝나지 않았다고 하던데,,")
time.sleep(2)
def choice(scene, status=0):
while(True):
if scene == "start":
cmd = input("무엇을 할까? 1.쉰다 2.탐험한다. 3.상태 \n>>")
if cmd == '1' or cmd == '2' or cmd == '3':
return cmd
else:
print("잘못 입력했다. 숫자를 입력하고 Enter")
time.sleep(1.5)
os.system("cls")
elif scene == "explore":
cmd = input("어디로 갈까? 1.갱도1 2.갱도2 \n>>")
if cmd == "2" and status == 0:
print("2번 갱도문이 잠겨있다. 아직은 갈 수 없을 것 같다.")
time.sleep(2)
continue
elif cmd == '1' or cmd == '2' or cmd == '3':
return cmd
else:
print("잘못 입력했다. 숫자를 입력하고 Enter")
time.sleep(1.5)
os.system("cls")
def explore(status = 0):
choice("explore")
def run():
status = 0 #갱도나 다른 장소에 들어갈 수 있는 지 없는 지 판단을 위한 변수
turn = 0 #지나간 일 수
tired = 0 #힘듦 수치
while True:
command = choice("start")
print(command)
if command == '1':
tired -=2
if tired <0:
tired = 0
turn += 1
print("몸이 좀 가벼워진 것 같다.")
time.sleep(1)
os.system("cls")
elif command == '2':
if tired > 10:
turn +=3
print("너무 지친다,, 잠시 쉬어야 할 것 같아...")
time.sleep(2)
print("힘듦 수치가 10을 넘으면 플레이어가 쓰러진 상태로 3일이 지나갑니다.")
time.sleep(2)
os.system("cls")
tired -=3
else:
tired +=1
os.system("cls")
explore(status)
os.system("cls")
elif command == '3':
os.system('cls')
print(f"동굴에 들어온 지 {turn}일, 힘듦 수치: {tired}")
if __name__ == "__main__":
run()
2.코드설명
스토리의 시작인 start 함수는 크게 달라진 점은 없고 빠른 진행을 위해 2번 갱도까지만 있다는 설정으로 바꿔주었습니다.
run()
def run():
status = 0 #갱도나 다른 장소에 들어갈 수 있는 지 없는 지 판단을 위한 변수
turn = 0 #지나간 일 수
tired = 0 #힘듦 수치
while True:
command = choice("start")
print(command)
if command == '1':
tired -=2
if tired <0:
tired = 0
turn += 1
print("몸이 좀 가벼워진 것 같다.")
time.sleep(1)
os.system("cls")
elif command == '2':
if tired > 10:
turn +=3
print("너무 지친다,, 잠시 쉬어야 할 것 같아...")
time.sleep(2)
print("힘듦 수치가 10을 넘으면 플레이어가 쓰러진 상태로 3일이 지나갑니다.")
time.sleep(2)
os.system("cls")
tired -=3
else:
tired +=1
os.system("cls")
explore(status)
os.system("cls")
elif command == '3':
os.system('cls')
print(f"동굴에 들어온 지 {turn}일, 힘듦 수치: {tired}")
run함수는 함수들을 모아 게임을 진행하는 함수입니다.
일정 턴을 버티면 승리하는 조건이므로 지나간 일 수를 확인하는 변수(turn)
status: 플레이어가 탐험한 정도를 구분하기 위해 만들어준 임시 변수로 처음부터 갱도2에 갈 수 없도록 한다거나, 특정 아이템을 얻었다는 것을 확인하기 위해 넣어주었습니다.
tired: 플레이어가 진행을 하는데 난이도를 부여하기 위해 힘듦 수치를 만들었습니다. 쉬지않고 탐험만 하면 쓰러져서 아무 것도 못하고 시간이 지나게 됩니다. 시간이 지날 수록 몬스터등이 강해지므로 불리해집니다.
매 턴마다 플레이어는 어떤 행동을 할지 선택하게 되는데 이를 choice함수를 이용하여 선택할 수 있도록 해주었습니다.
choice()
def choice(scene, status=0):
while(True):
if scene == "start":
cmd = input("무엇을 할까? 1.쉰다 2.탐험한다. 3.상태 \n>>")
if cmd == '1' or cmd == '2' or cmd == '3':
return cmd
else:
print("잘못 입력했다. 숫자를 입력하고 Enter")
time.sleep(1.5)
os.system("cls")
elif scene == "explore":
cmd = input("어디로 갈까? 1.갱도1 2.갱도2 \n>>")
if cmd == "2" and status == 0:
print("2번 갱도문이 잠겨있다. 아직은 갈 수 없을 것 같다.")
time.sleep(2)
continue
elif cmd == '1' or cmd == '2' or cmd == '3':
return cmd
else:
print("잘못 입력했다. 숫자를 입력하고 Enter")
time.sleep(1.5)
os.system("cls")
choice함수는 매개변수를 이용하여 현재 플레이어가 있는 위치에 따라 여러 선택지를 주는 형태로 만들었습니다. 숫자를입력하고 enter키를 누르면 해당 단어/문장을 선택하게 됩니다.
explore()
이 함수는 갱도 탐험을 할 때 사용할 함수입니다. 현재 진행중이기 때문에 다음에 설명하도록 하겠습니다.
반응형
'[파이썬]Python > TextRPG게임' 카테고리의 다른 글
[파이썬] TextRPG 게임 만들기 #5.fin | 게임 엔딩, 몬스터 전투, 마무리 (0) | 2023.02.02 |
---|---|
[파이썬] TextRPG 게임 만들기 #4 | 탐험 진행 모듈, 튜토리얼, 스토리 (0) | 2023.01.18 |
[파이썬] TextRPG 게임 만들기#2 | 모듈 나누기, 튜토리얼, 스토리 (3) | 2023.01.04 |
[파이썬] TextRPG 게임 만들기#1 | 게임 로고 및 메뉴 (0) | 2023.01.02 |
[파이썬] TextRPG 게임 만들기#0 | GUI 없이 만드는 게임 계획 (0) | 2023.01.02 |