본문 바로가기

카테고리 없음

[파이썬] 텍스트로 하는 간단한 RPG 게임

728x90
반응형

간단한 RPG 게임. 어렵다 ㅋㅋㅋ

 

엘든링 같은 게임 만드는 사람들은 신이야

import random


class Player:
    def __init__(self, name, health, strength, defense):
        self.name = name
        self.health = health
        self.strength = strength
        self.defense = defense

    def attack(self, monster):
        damage = self.strength - monster.defense
        if damage < 0:
            damage = 0
        monster.health -= damage
        print(f"{self.name}은(는) {monster.name}에게 {damage}의 피해를 입혔다!")

    def defend(self):
        self.defense += 5
        print(f"{self.name}은(는) 방어를 사용하여 방어력이 5 증가하였다!")

    def rest(self):
        self.health += 10
        print(f"{self.name}은(는) 휴식을 취하여 체력이 10 회복되었다.")

    def is_alive(self):
        return self.health > 0


class Monster:
    def __init__(self, name, health, strength, defense):
        self.name = name
        self.health = health
        self.strength = strength
        self.defense = defense

    def attack(self, player):
        damage = self.strength - player.defense
        if damage < 0:
            damage = 0
        player.health -= damage
        print(f"{self.name}은(는) {player.name}에게 {damage}의 피해를 입혔다!")

    def is_alive(self):
        return self.health > 0


def create_monster():
    monsters = [
        ("슬라임", 10, 2, 0),
        ("고블린", 20, 4, 1),
        ("트롤", 30, 6, 2),
        ("드래곤", 50, 10, 5)
    ]
    name, health, strength, defense = random.choice(monsters)
    return Monster(name, health, strength, defense)


def main():
    player_name = input("플레이어 이름을 입력하세요: ")
    player = Player(player_name, 30, 5, 2)
    while True:
        monster = create_monster()
        print(f"{monster.name}이(가) 나타났습니다!")
        while player.is_alive() and monster.is_alive():
            action = input("어떤 행동을 하시겠습니까? (공격, 방어, 휴식) ")
            if action == "공격":
                player.attack(monster)
            elif action == "방어":
                player.defend()
            elif action == "휴식":
                player.rest()
            else:
                print("잘못된 입력입니다.")
                continue
            if monster.is_alive():
                monster.attack(player)
        if player.is_alive():
            print(f"{player.name}은(는) {monster.name}을(를) 물리쳤습니다!")
        else:
            print(f"{player.name}은(는) {monster.name}에게 격렬한 공격을 받아 죽었습니다...")
            break


if __name__ == "__main__":
    main()
반응형