일주일 동안 파이썬 기초강의와 심화강의를 반복해서 들었고 모두 생소하지만 익숙한 이상한 느낌이었다.
금요일에 개인 과제가 발제되었고 주말에 시간을 내어서 과제를 들여다 보았다.
과제는 파이썬으로 턴제 게임을 만드는 것.
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}")
이게 힌트로 주어진 코드인데 이걸 해석하는 것 부터 시작했다.
우선 init 이게 도대체 뭐지..?
그러니까 객체를 생성할 때 기본값으로 가지게 될 베이스 라는거지? 라고 이해했다.
일주일이 지난 지금 2023/04/02에 다시 와서 보니 이 때는 제대로 이해를 못했던 것 같다. 객체가 생성 될 때 호출되는 함수. 무조건 실행되기 때문에 속성과 값을 설정했던 것이다. 그래야 이 init를 가진 Character 클래스를 통해 player를 객체로 만들어 내가 원하는 스텟을 줄 수 있으니까!!
나는 이 게임을 도박적인 수가 많도록 만들고 싶었다.
def __init__(self, name, attack_type):
self.name = name
self.max_hp = random.randint(50,150)
self.hp = self.max_hp
self.max_mp = random.randint(50,150)
self.mp = self.max_mp
self.ad = random.randint(5,15)
self.ap = random.randint(10,20)
self.attack_type = attack_type
시작 시 체력, 마나, 물리공격력과 마법공격력도 때마다 편차가 크게 하고 싶어서 작업중이다.
이후 다음 목표는 일정량의 마나를 소모하고 랜덤 데미지를 가하는 것이다. 마나소모를 어떻게 해야할지 고민..