더북(TheBook)

공중 공격 유닛의 이동이므로 메서드 동작에 안내 문구를 추가합니다. 그리고 공중으로 날아다니므로 또 다른 부모 클래스인 Flyable 클래스에 정의한 fly() 메서드를 호출하면 됩니다. 이때 유닛 이름과 이동할 위치 정보를 함께 전달합니다.

# 공중 공격 유닛
class FlyableAttackUnit(AttackUnit, Flyable):
    def __init__(self, name, hp, damage, flying_speed):
        AttackUnit.__init__(self, name, hp, damage, 0)
        Flyable.__init__(self, flying_speed)

 

    def move(self, location): # Unit 클래스의 move() 메서드를 오버라이딩
        print("[공중 유닛 이동]")
        self.fly(self.name, location)

메서드를 새로 정의했으니 제대로 적용되는지 다시 한번 유닛들을 이동시켜 봅시다. 이번에는 지상과 공중 구분 없이 모두 move()로만 이동하겠습니다. fly() 메서드를 사용할 때와 달리 유닛 이름까지 전달해야 하는 번거로움을 줄일 수 있습니다.

hoverbike.move("11시")
# spacecruiser.fly(spacecruiser.name, "9시")
spacecruiser.move("9시") # 오버라이딩한 move() 메서드 호출

실행결과 icon_con

[지상 유닛 이동]
호버 바이크 : 11시 방향으로 이동합니다. [속도 10]
[공중 유닛 이동]
우주 순양함 : 9시 방향으로 날아갑니다. [속도 3]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.