3/20~26 WIL

나명흠·2023년 3월 27일
0

일주일 동안 파이썬 기초강의와 심화강의를 반복해서 들었고 모두 생소하지만 익숙한 이상한 느낌이었다.

금요일에 개인 과제가 발제되었고 주말에 시간을 내어서 과제를 들여다 보았다.
과제는 파이썬으로 턴제 게임을 만드는 것.

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 이게 도대체 뭐지..?

chat gpt:

init는 파이썬 클래스의 특수한 메서드로, 객체가 생성될 때 호출되는 초기화 함수입니다. 클래스 내부에 정의된 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

시작 시 체력, 마나, 물리공격력과 마법공격력도 때마다 편차가 크게 하고 싶어서 작업중이다.

이후 다음 목표는 일정량의 마나를 소모하고 랜덤 데미지를 가하는 것이다. 마나소모를 어떻게 해야할지 고민..

profile
가보자고

0개의 댓글

관련 채용 정보