더북(TheBook)

코드 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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.