개인프로젝트/몬스터 턴제게임

몬스터 턴제게임 만들기 시작_max()

끈끈 2023. 3. 27. 21:01

 

요구사항

 

- 이름을 입력해 플레이어를 생성할 수 있어야 합니다.
- 몬스터는 임의 생성할 수 있어야 합니다.
- while 반복문을 사용해 종료 조건을 충족할 때까지 턴제 플레이어와 몬스터간 전투를 반복 진행해야 합니다.
- 플레이어는 공격 타입을 선택할 수 있어야 합니다.
  ex) `일반공격` , `마법공격`
- 몬스터는 일반 공격을 할 수 있어야 합니다.
- 매 전투시 플레이어와 몬스터의 상태 정보를 출력해야 합니다.
- 모든 공격은 캐릭터의 파워 기준으로 랜덤성을 가지고있어야 합니다.
  ex) 파워가 10인경우 일반공격은 8~12사이의 랜덤한 값으로 공격
- 몬스터나 플레이어의 HP가 0이되면 전투를 종료하고 승리 또는 패배를 출력해야 합니다.

 

기본 가이드

 

1. 시작
    - 플레이어 생성 (Player)
        - 이름
        - HP
        - MP
        - 파워
        - 일반공격
        - 마법파워
        - 마법공격
    - 몬스터 생성 (Monster)
        - 이름
        - HP
        - 일반공격
2. 전투
    - 몬스터와 턴제 전투 (While 반복문 사용)
        - 플레이어, 몬스터 상태 출력
        - 플레이어의 공격 방법 선택 (일반, 마법)
        - 플레이어 공격
        - 몬스터 공격
3. 종료
    - 승리 or 패배

 

힌트

 

class Character:
    """
    모든 캐릭터의 모체가 되는 클래스
    """
    def __init__(self, name, hp, power):
        self.name = name
        self.max_hp = hp
        self.hp = hp
        self.power = power

    def attack(self, other):
        damage = random.randint(self.power - 2, self.power + 2)
        other.hp = max(other.hp - damage, 0)
        print(f"{self.name}의 공격! {other.name}에게 {damage}의 데미지를 입혔습니다.")
        if other.hp == 0:
            print(f"{other.name}이(가) 쓰러졌습니다.")

    def show_status(self):
        print(f"{self.name}의 상태: HP {self.hp}/{self.max_hp}")

 


 

여기서 other.hp에 왜 max()가 들어가 있는지 궁금했다

 

파이썬의 max/min 함수는 두 개 이상의 값을 받아 그 중 가장 큰/작은 값을 반환하는 함수.

 

리스트 튜플, 혹은 문자열에서도 사용 가능!

 

위 게임 힌트의 경우, other.hp-damage 0 중에서 큰 값을 반환하게 하여

 

damage를 받은 hp의 값이 음수로 출력되는 것을 막아 주기 위한 것이다

 

'개인프로젝트 > 몬스터 턴제게임' 카테고리의 다른 글

몬스터 턴제게임 만들기 끝  (2) 2023.03.28