더북(TheBook)

코드 7-13 oop2/oop2_3/character.py ②

class Player(Character):
    def _ _init__(self, name = 'player', hp = 100, power = 10, *attack_kinds):
        super().__init__(name, hp, power)

        # 추가된 인스턴스 멤버
        self.skills = [ ]
        for attack_kind in attack_kinds:
            self.skills.append(attack_kind)

    # 재정의된 attack( ) 메서드
    # 반드시 재정의되어야 한다
    def attack(self, other, attack_kind):
        if attack_kind in self.skills:
            other.get_damage(self.power, attack_kind)

    # 재정의된 get_damage( ) 메서드
    # 반드시 재정의되어야 한다
    def get_damage(self, power, attack_kind):
        '''
        만약 공격 종류가
        플레이어의 기술 중 하나라면
        피해가 절반으로 감소한다
        '''
        if attack_kind in self.skills:
            self.HP -= (power//2)
          else:
            self.HP -= power


현재까지 만든 클래스 디자인을 그림으로 표현하면 그림 7-4와 같습니다.

143

그림 7-4 character 클래스 디자인 ①

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.