코드 7-14를 보면 공통 부분을 Monster 클래스에 두었으므로 FireMonster 클래스와 IceMonster 클래스에는 추가되거나 변경되는 부분만 기술하면 됩니다.
코드 7-15 oop2/oop2_3/character.py ④
if __name__ = = "__main__": player = Player('sword master',100, 30, 'ICE') monsters = [ ] monsters.append(IceMonster( ) ) monsters.append(FireMonster( ) ) for monster in monsters: print(monster) for monster in monsters: # 공격을 받는 몬스터 객체가 # 어떤 몬스터인지에 따라 호출되는 메서드가 달라지고 # 그에 따라 결과도 달라진다 player.attack(monster, 'ICE') print('after the player attacked') for monster in monsters: print(monster) print('') print(player) for monster in monsters: # 플레이어가 ICE 공격만 가지고 있으므로 # 아이스 몬스터가 공격할 때는 공격력이 절반(10)만 깎이고 # 파이어 몬스터가 공격할 때는 공격력이 그대로(20) 깎인다 # 모든 공격이 끝난 후 플레이어의 체력은 # 100 - ((10//2) + 20) = 75 monster.attack(player, monster.get_attack_kind()) print('after monsters attacked') print(player)
실행결과