더북(TheBook)

보병에 이어 탱크를 위한 Tank 클래스를 만들겠습니다. 탱크는 특수 기술로 시지 모드가 있는데 이 기술을 사용하면 탱크를 지상에 고정하고 무려 2배에 달하는 공격력과 더 넓은 사정거리로 공격할 수 있습니다. 다만, 이 기술은 처음부터 바로 사용할 수 없고 업그레이드로 시지 모드를 개발해야만 사용할 수 있습니다.

보병과 동일하게 AttackUnit 클래스를 상속받습니다.

시지 모드를 개발하면 해당 시점부터 모든 탱크를 시지 모드로 전환할 수 있습니다. 이미 만든 탱크도, 앞으로 만들 탱크도 모두 포함해서 말이죠. 이렇게 한 클래스로 만들어진 객체에 일괄적으로 무언가를 적용하려면 인스턴스 변수가 아닌 클래스 변수로 정의해야 합니다. 코드에서는 siege_developed라는 이름으로 클래스 변수를 정의하겠습니다. 이때 정의 위치가 어디인지를 꼭 확인해 주세요.

시지 모드 개발이 완료됐다고 해서 모든 탱크가 항상 시지 모드여야 하는 것은 아닙니다. 그래서 시지 모드인지 아닌지를 확인하기 위해 siege_mode라는 인스턴스 변수를 정의합니다. 처음에는 일반 모드일 테니 시지 모드 해제 상태, 즉 False로 두겠습니다.

# 탱크 유닛
class Tank(AttackUnit): ------------ ➊ AttackUnit 클래스 상속
    # 시지 모드: 탱크를 지상에 고정, 이동 불가, 공격력 증가
    siege_developed = False -------- ➋ 시지 모드 개발 여부, 클래스 변수로 정의

    def __init__(self):
        AttackUnit.__init__(self, "탱크", 150, 35, 1) # 이름, 체력, 공격력, 이동 속도
        self.siege_mode = False ---- ➌ 시지 모드(해제 상태), 인스턴스 변수로 정의
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.