코드 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)
    

    실행결과

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