FireMonster 클래스와 IceMonster 클래스는 공통된 부분이 많으므로 이 부분을 묶어 기본 클래스인 Monster 클래스에 둡니다.

    코드 7-14 oop2/oop2_3/character.py ③

    # 불과 얼음 몬스터는 모두 Character 클래스에서 추가된
    # attack_kind 멤버를 가지고 있으며
    # attack( ) 메서드와 get_damage( ) 메서드는 같은 행동을 한다
    # 공통된 부분은 Monster라는 부모 클래스를 만들어 거기에 둔다
    class Monster(Character):
        def _ _init__(self, name, hp, power):
            super().__init__(name, hp, power)
            self.attack_kind = 'None'
    
        def attack(self, other, attack_kind):
            if self.attack_kind = = attack_kind:
                other.get_damage(self.power, attack_kind)
    
        # 플레이어가 불 공격을 할 때
        # 공격받는 객체가 얼음 몬스터라면 체력이 깎이고
        # 공격받는 객체가 불 몬스터라면 오히려 체력이 늘어난다
        def get_damage(self, power, attack_kind):
            '''
            몬스터는 자신과 타입이 같은 공격을 당하면
            오히려 체력이 늘어납니다
            조심해서 공격하세요
            '''
            if self.attack_kind = = attack_kind:
                self.HP += power
            else:
                self.HP -= power
    
        def get_attack_kind(self):
            return self.attack_kind
    
    class IceMonster(Monster):
        def _ _init__(self, name = 'Ice monster', hp = 50, power = 10):
            super().__init__(name, hp, power)
            self.attack_kind = 'ICE'
    
    class FireMonster(Monster):
        def _ _init__(self, name = 'Fire monster', hp = 50, power = 20):
            super().__init__(name, hp, power)
            self.attack_kind = 'FIRE'
    
        # 메서드 추가
        # FireMonster만의 행동
        def fireball(self):
            print('fireball')
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.