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')