공중 공격 유닛의 이동이므로 메서드 동작에 안내 문구를 추가합니다. 그리고 공중으로 날아다니므로 또 다른 부모 클래스인 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() 메서드 호출
실행결과 |
[지상 유닛 이동] 호버 바이크 : 11시 방향으로 이동합니다. [속도 10] [공중 유닛 이동] 우주 순양함 : 9시 방향으로 날아갑니다. [속도 3] |