요구사항
- 이름을 입력해 플레이어를 생성할 수 있어야 합니다.
- 몬스터는 임의 생성할 수 있어야 합니다.
- 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 |
---|