오늘은 파이썬을 이요하여텍스트 기반 RPG 게임을 만드는 방법에 대해서 알아보겠습니다. 텍스트 RPG는 그래픽 없이 텍스트만으로 진행되는 게임이에요. 간단하면서도 재미 있는 프로젝트라 파이썬 초보자에도 딱 좋습니다.
1.게임의 기본 구조 만들기
먼저 게임의 뼈대를 만들어 볼까요? 다음과 같은 기본 구조로 시작해 봅시다.
import random
def game_start():
print("텍스트 RPG 게임에 오신 것을 환영합니다!")
player_name = input("당신의 이름은 무엇인가요? ")
print(f"{player_name}님, 모험을 시작합니다!")
def main_menu():
while True:
print("\n무엇을 하시겠습니까?")
print("1. 게임 시작")
print("2. 게임 설명")
print("3. 종료")
choice = input("선택: ")
if choice == "1":
game_start()
elif choice == "2":
print("이 게임은 텍스트 기반 RPG 게임입니다.")
elif choice == "3":
print("게임을 종료합니다. 안녕히 가세요!")
break
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
main_menu()
이 코드는 게임의 메인 메뉴를 만들어 줍니다. 플레이어는 게임 시작, 설명보기, 종료 중 하나를 선택할 수 있습니다.
2. 캐릭터 만들기
RPG의 핵심은 캐릭터죠! 간단한 캐릭터 클래스를 만들어 봅시다.
class Character:
def __init__(self, name):
self.name = name
self.health = 100
self.attack = 10
self.defense = 5
self.gold = 0
def status(self):
print(f"\n{self.name}의 상태")
print(f"체력: {self.health}")
print(f"공격력: {self.attack}")
print(f"방어력: {self.defense}")
print(f"골드: {self.gold}")
player = Character(player_name)
이렇게 하면 플레이어의 이름, 체력, 공격력, 방어력, 골드를 관리할 수 있어요.
3.몬스터 만들기
게임에 몬스터도 추가해볼까요? 몬스터 클래스를 만들어 봅시다.
class Monster:
def __init__(self, name, health, attack, defense, gold_reward):
self.name = name
self.health = health
self.attack = attack
self.defense = defense
self.gold_reward = gold_reward
monsters = [
Monster("슬라임", 20, 5, 2, 10),
Monster("고블린", 30, 7, 3, 15),
Monster("오크", 50, 12, 5, 25)
]
이제 다양한 몬스터를 만들 수 있어요.
4. 전투 시스템 구현하기
전투 시스템을 만들어 볼까요? 다음과 같은 함수를 추가해봅시다.
def battle(player, monster):
print(f"\n{monster.name}이(가) 나타났다!")
while player.health > 0 and monster.health > 0:
print("\n1. 공격")
print("2. 도망가기")
choice = input("무엇을 하시겠습니까? ")
if choice == "1":
damage = max(player.attack - monster.defense, 0)
monster.health -= damage
print(f"{player.name}의 공격! {monster.name}에게 {damage}의 데미지를 입혔습니다.")
if monster.health <= 0:
print(f"{monster.name}을(를) 물리쳤습니다!")
player.gold += monster.gold_reward
print(f"{monster.gold_reward} 골드를 얻었습니다!")
break
monster_damage = max(monster.attack - player.defense, 0)
player.health -= monster_damage
print(f"{monster.name}의 공격! {player.name}님이 {monster_damage}의 데미지를 입었습니다.")
if player.health <= 0:
print("게임 오버! 당신은 쓰러졌습니다...")
break
elif choice == "2":
if random.random() < 0.5:
print("도망치는데 성공했습니다!")
break
else:
print("도망치지 못했습니다.")
monster_damage = max(monster.attack - player.defense, 0)
player.health -= monster_damage
print(f"{monster.name}의 공격! {player.name}님이 {monster_damage}의 데미지를 입었습니다.")
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
이 함수는 플레이어와 몬스터 간의 전투를 시물레이션 하니다. 플레이어는 공격하거나 도망갈 수 있어요.
5.게임 루프 만들기
이제 모든 요소를 하나로 묶어 게임 루프를 만들어 봅시다.
def game_loop():
while player.health > 0:
print("\n1. 모험을 떠나기")
print("2. 상태 확인")
print("3. 게임 종료")
choice = input("무엇을 하시겠습니까? ")
if choice == "1":
monster = random.choice(monsters)
battle(player, monster)
elif choice == "2":
player.status()
elif choice == "3":
print("게임을 종료합니다. 안녕히 가세요!")
break
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
if player.health <= 0:
print("게임 오버! 다시 도전해보세요.")
이 루프는 플레이어가 모험을 떠나거나, 상태를 확인하거나, 게임을 종료할 수 있게 해줍니다.
6.합쳐진 최종 결과 코드
import random
class Character:
def __init__(self, name):
self.name = name
self.health = 100
self.attack = 10
self.defense = 5
self.gold = 0
def status(self):
print(f"\n{self.name}의 상태")
print(f"체력: {self.health}")
print(f"공격력: {self.attack}")
print(f"방어력: {self.defense}")
print(f"골드: {self.gold}")
class Monster:
def __init__(self, name, health, attack, defense, gold_reward):
self.name = name
self.health = health
self.attack = attack
self.defense = defense
self.gold_reward = gold_reward
monsters = [
Monster("슬라임", 20, 5, 2, 10),
Monster("고블린", 30, 7, 3, 15),
Monster("오크", 50, 12, 5, 25)
]
def battle(player, monster):
print(f"\n{monster.name}이(가) 나타났다!")
while player.health > 0 and monster.health > 0:
print("\n1. 공격")
print("2. 도망가기")
choice = input("무엇을 하시겠습니까? ")
if choice == "1":
damage = max(player.attack - monster.defense, 0)
monster.health -= damage
print(f"{player.name}의 공격! {monster.name}에게 {damage}의 데미지를 입혔습니다.")
if monster.health <= 0:
print(f"{monster.name}을(를) 물리쳤습니다!")
player.gold += monster.gold_reward
print(f"{monster.gold_reward} 골드를 얻었습니다!")
break
monster_damage = max(monster.attack - player.defense, 0)
player.health -= monster_damage
print(f"{monster.name}의 공격! {player.name}님이 {monster_damage}의 데미지를 입었습니다.")
if player.health <= 0:
print("게임 오버! 당신은 쓰러졌습니다...")
break
elif choice == "2":
if random.random() < 0.5:
print("도망치는데 성공했습니다!")
break
else:
print("도망치지 못했습니다.")
monster_damage = max(monster.attack - player.defense, 0)
player.health -= monster_damage
print(f"{monster.name}의 공격! {player.name}님이 {monster_damage}의 데미지를 입었습니다.")
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
def game_loop(player):
while player.health > 0:
print("\n1. 모험을 떠나기")
print("2. 상태 확인")
print("3. 게임 종료")
choice = input("무엇을 하시겠습니까? ")
if choice == "1":
monster = random.choice(monsters)
battle(player, monster)
elif choice == "2":
player.status()
elif choice == "3":
print("게임을 종료합니다. 안녕히 가세요!")
break
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
if player.health <= 0:
print("게임 오버! 다시 도전해보세요.")
def game_start():
print("텍스트 RPG 게임에 오신 것을 환영합니다!")
player_name = input("당신의 이름은 무엇인가요? ")
player = Character(player_name)
print(f"{player_name}님, 모험을 시작합니다!")
game_loop(player)
def main_menu():
while True:
print("\n무엇을 하시겠습니까?")
print("1. 게임 시작")
print("2. 게임 설명")
print("3. 종료")
choice = input("선택: ")
if choice == "1":
game_start()
elif choice == "2":
print("이 게임은 텍스트 기반 RPG 게임입니다.")
print("몬스터와 싸우고 골드를 모으세요!")
print("체력이 0이 되면 게임 오버입니다.")
elif choice == "3":
print("게임을 종료합니다. 안녕히 가세요!")
break
else:
print("잘못된 선택입니다. 다시 선택해주세요.")
if __name__ == "__main__":
main_menu()
마무리
여기까지 간단한 텍스트 RPG 게임의 기본 구조를 만들어보았습니다. 이제 여러분만의 아이디어로 게임을 더욱 발전시켜 보세요. 예를들어, 아이템 시스템을 추가하거나 다양한 퀘스트를 만들거나, 레벨 업 시스템을 구현해볼 수 있어요.
파이썬으로 게임을 만드는 것은 프로그래밍 실력을 향상시키는 좋은 방법이에요. 게임을 만들면서 조건문, 반복문, 함수, 클래스 등 다양한 파이썬 개념을 실제로 적용해볼 수 있거든요.
더 복잡한 게임을 만들고 싶다면 Pygame 같은 라이브러리를 사용해 그래픽 요소를 추가할 수 있습니다. 하지만 텍스트 기반 게임만으로도 충분히 재미있고 도전적인 프로젝트가 될 수 있습니다.
'IT > Python' 카테고리의 다른 글
[Python] Turtle 그래픽을 이용한 미니 게임 만들기 (0) | 2025.01.20 |
---|---|
[Python] 파이썬을 이용한 퍼즐 게임 구현하기 (0) | 2025.01.19 |
[Python] Pygame으로 간단한 2D 게임 만들기 (0) | 2025.01.19 |
[Python] 파이썬을 이용한 암호화 및 복호화 기법 학습하기 (0) | 2025.01.18 |
[Python] 파이썬으로 네트워크 스캐너 구현하기 (0) | 2025.01.18 |