챗지피티가 짜준 rpg게임 파이썬 코드입니다. 제가 하면 한 2개월 정도 걸릴 것 같은데... https://colab.research.google.com/drive/1hw8Ef7RzI8j_0o92HFlA5Ey55vFEtXkc?authuser=0원본 import random # 플레이어 설정class Player:def __init__(self):self.hp = 100self.max_hp = 100self.mp = 50self.max_mp = 50self.attack = 15self.defense = 5self.gold = 50self.level = 1self.exp = 0self.exp_to_next = 50self.passive_regen = 3 # 턴마다 체력 회복 def heal(self):if self.mp >= 10:self.hp = min(self.hp + 30, self.max_hp)self.mp -= 10print("✨ 기본 힐을 사용하여 체력을 회복했습니다!")else:print("❌ MP가 부족합니다!") def double_strike(self, monster):if self.mp >= 15:self.mp -= 15total_damage = 0for _ in range(2):damage = max(self.attack - monster.defense, 1)monster.hp -= damagetotal_damage += damageprint(f"⚡ 더블 스트라이크 발동! 총 {total_damage} 데미지를 입혔습니다!")else:print("❌ MP가 부족합니다!") def enhanced_heal(self):if self.mp >= 20:self.hp = min(self.hp + 60, self.max_hp)self.mp -= 20print("✨ 강화 힐로 대량 회복했습니다!")else:print("❌ MP가 부족합니다!") def status(self):print(f"❤️ HP: {self.hp}/{self.max_hp} | 🔵 MP: {self.mp}/{self.max_mp} | 🧪 Lv.{self.level} | 🏅 EXP: {self.exp}/{self.exp_to_next} | 💰 Gold: {self.gold}") def passive_heal(self):self.hp = min(self.hp + self.passive_regen, self.max_hp) def gain_exp(self, amount):self.exp += amountprint(f"🏅 {amount} 경험치를 얻었습니다!")while self.exp >= self.exp_to_next:self.level_up() def level_up(self):self.level += 1self.exp -= self.exp_to_nextself.exp_to_next = int(self.exp_to_next * 1.5)self.max_hp += 20self.hp = self.max_hpself.max_mp += 10self.mp = self.max_mpself.attack += 5self.defense += 2self.passive_regen += 1print(f"\n🎉 레벨 업! Lv.{self.level}이 되었습니다! 능력치가 상승했습니다!\n") # 몬스터 설정class Monster:def __init__(self, name, hp, attack, defense, gold_reward, exp_reward, skill=None, passive=None):self.name = nameself.hp = hpself.attack = attackself.defense = defenseself.gold_reward = gold_rewardself.exp_reward = exp_rewardself.skill = skillself.passive = passive def use_skill(self, player):if self.skill and random.random() < 0.3: # 30% 확률로 스킬 사용self.skill(self, player)else:damage = max(self.attack - player.defense, 1)player.hp -= damageprint(f"\n👹 {self.name}의 일반 공격! {damage} 데미지를 받았습니다.") def activate_passive(self):if self.passive:self.passive(self) # 몬스터 스킬def poison_attack(monster, player):print(f"☠️ {monster.name}의 독 공격! 추가로 5 독 데미지!")damage = max(monster.attack - player.defense, 1)player.hp -= (damage + 5) def critical_attack(monster, player):print(f"💥 {monster.name}의 크리티컬 공격! 2배 데미지!")damage = max(monster.attack * 2 - player.defense, 1)player.hp -= damage def regen(monster):heal = 5monster.hp += healprint(f"✨ {monster.name}이(가) 턴마다 {heal}씩 회복합니다!") # 전투 함수def battle(player, monster):print(f"⚔️ {monster.name}와(과) 전투 시작!")while player.hp > 0 and monster.hp > 0:player.passive_heal()monster.activate_passive() print("\n당신의 턴입니다!")player.status()print("1. 일반 공격")print("2. 기본 힐 (10MP)")print("3. 더블 스트라이크 (15MP)")print("4. 강화 힐 (20MP)")action = input("선택하세요 (1/2/3/4): ") if action == '1':damage = max(player.attack - monster.defense, 1)monster.hp -= damageprint(f"{damage} 데미지를 입혔습니다!")elif action == '2':player.heal()elif action == '3':player.double_strike(monster)elif action == '4':player.enhanced_heal()else:print("❗ 올바른 행동을 선택하세요!")continue if monster.hp <= 0:print(f"\n🎉 {monster.name}를 물리쳤습니다! {monster.gold_reward}골드와 경험치 {monster.exp_reward}를 얻었습니다.")player.gold += monster.gold_rewardplayer.gain_exp(monster.exp_reward)return # 몬스터 턴monster.use_skill(player) if player.hp <= 0:print("\n☠️ 당신은 쓰러졌습니다...")death_penalty(player) # ✨ 죽었을 때 처리def death_penalty(player):print("\n👼 당신은 마을의 힐러에 의해 부활했습니다.")print(f"💰 당신은 가진 모든 골드({player.gold}골드)를 잃었습니다...")player.gold = 0player.hp = player.max_hpplayer.mp = player.max_mp # 장소def town(player):while True:print("\n🏘️ 마을입니다. 무엇을 하시겠습니까?")print("1. 힐러에게 치료받기 (10골드)")print("2. 상점에서 포션 구입 (10골드)")print("3. 정보상 만나기")print("4. 마을 나가기")choice = input("선택하세요 (1/2/3/4): ") if choice == '1':if player.gold >= 10:player.hp = player.max_hpplayer.mp = player.max_mpplayer.gold -= 10print("❤️ 전부 회복되었습니다!")else:print("❌ 골드가 부족합니다.")elif choice == '2':print("🧪 포션 구입 (아직 포션 사용은 구현 예정!)")elif choice == '3':print("🧙‍♂️ 정보상: '동굴에는 강한 몬스터가, 보스 던전에는 전설의 드래곤이 있어!'")elif choice == '4':breakelse:print("❗ 올바른 선택을 해주세요!") def field(player):print("\n🌳 평원입니다. 약한 몬스터가 나타납니다.")monster = random.choice([Monster("작은 슬라임", 30, 8, 2, 15, 20),Monster("독거미", 50, 10, 5, 20, 30, skill=poison_attack)])battle(player, monster) def cave(player):print("\n🕳️ 동굴입니다. 강한 몬스터가 나타납니다.")monster = random.choice([Monster("암흑 기사", 90, 18, 10, 50, 50, skill=critical_attack),Monster("슬라임 킹", 130, 20, 8, 70, 70, passive=regen)])battle(player, monster) def boss_dungeon(player):if player.level < 3:print("\n🚫 레벨이 낮아 보스 던전에 입장할 수 없습니다!")returnprint("\n🏰 보스 던전에 입장했습니다!")boss1 = Monster("지옥의 드래곤", 300, 40, 15, 200, 200, skill=critical_attack, passive=regen)boss2 = Monster("타락한 천사", 250, 35, 20, 250, 250, skill=poison_attack) battle(player, boss1)if player.hp > 0:print("\n👿 다음 보스가 나타났다!!")battle(player, boss2) if player.hp > 0:print("\n🏆 모든 보스를 쓰러뜨렸습니다! 전설이 되었습니다!") # 메인 루프def main():player = Player()print("🎮 텍스트 기반 RPG 게임에 오신 것을 환영합니다!") while True:print("\n어디로 가시겠습니까?")print("1. 마을")print("2. 평원으로 가기")print("3. 동굴로 가기")print("4. 보스 던전으로 가기")print("5. 상태 보기")choice = input("선택하세요 (1/2/3/4/5): ") if choice == '1':town(player)elif choice == '2':field(player)elif choice == '3':cave(player)elif choice == '4':boss_dungeon(player)elif choice == '5':player.status()else:print("❗ 올바른 선택을 해주세요!") if __name__ == "__main__":main()
Avatar of mozart_eats_pizza
mozart_eats_pizza Apr 25, 2025

깃헙 아이디:

코네: CodeNameX0

Admins