인프런 커뮤니티 질문&답변

rlagus0629님의 프로필 이미지
rlagus0629

작성한 질문수

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

스타크래프트 프로젝트 후반전

Tank 쪽 시즈모드 오류

작성

·

267

0

class Tank(AttackUnit):
    sieze_developed = False        
    
    def __init__(self):
        AttackUnit.__init__(self"탱크"150135)
        self.seize_mode = False

    def set_seize_mode(self):
        if Tank.seize.developed == False:
            return
        
        # 시즈모드 아닐 경우
        if self.seize_mode == False:
            print("{0} : 시즈모드로 전환합니다.".format(self.name))
            self.damage *= 2
            self.seize_mode = True
        else:
            print("{0} : 일반모드로 전환합니다.".format(self.name))
            self.damage /= 2
            self.seize_mode = False
 
for unit in attack_units:
    if isinstance(unit, Marine): #isinstance는 객체가 특정 클래스의 객체인지 확인하는 방법으로 쓰임
        unit.stimpack()
    elif isinstance(unit, Tank):
        unit.set_seize_mode()
    elif isinstance(unit. Wraith):
       unit.setclocking()
 
Tank 클래스 쪽 무슨 오류인지 모르겠습니다 실행하면 밑에처럼 나오는데 도저히 모르겠어서 ㅠ
 
 
[알림] 새로운 게임을 시작합니다. 마린 유닛이 생성되었습니다. 마린 유닛이 생성되었습니다. 마린 유닛이 생성되었습니다. 탱크 유닛이 생성되었습니다. 탱크 유닛이 생성되었습니다. 레이스 유닛이 생성되었습니다. 마린 : 1시 방향으로 이동합니다. 마린 : 1시 방향으로 이동합니다. 마린 : 1시 방향으로 이동합니다. 탱크 : 1시 방향으로 이동합니다. 탱크 : 1시 방향으로 이동합니다. 레이스 : 1시 방향으로 날아갑니다. [속도 5] [알림] 탱크 시즈 모드 개발 완료. 마린 : 스팀팩을 사용합니다. (HP 10 감소) 마린 : 스팀팩을 사용합니다. (HP 10 감소) Traceback (most recent call last): File "c:\Users\rlagu\Desktop\python\super.py", line 129, in <module> unit.seize_mode() TypeError: 'bool' object is not callable PS C:\Users\rlagu\Desktop\python> & C:/Users/rlagu/AppData/Local/Programs/Python/Python39/python.exe c:/Users/rlagu/Desktop/python/super.py [알림] 새로운 게임을 시작합니다. 마린 유닛이 생성되었습니다. 마린 유닛이 생성되었습니다. 마린 유닛이 생성되었습니다. 탱크 유닛이 생성되었습니다. 탱크 유닛이 생성되었습니다. 레이스 유닛이 생성되었습니다. 마린 : 1시 방향으로 이동합니다. 마린 : 1시 방향으로 이동합니다. 마린 : 1시 방향으로 이동합니다. 탱크 : 1시 방향으로 이동합니다. 탱크 : 1시 방향으로 이동합니다. 레이스 : 1시 방향으로 날아갑니다. [속도 5] [알림] 탱크 시즈 모드 개발 완료. 마린 : 스팀팩을 사용합니다. (HP 10 감소) 마린 : 스팀팩을 사용합니다. (HP 10 감소) 마린 : 스팀팩을 사용합니다. (HP 10 감소) Traceback (most recent call last): File "c:\Users\rlagu\Desktop\python\super.py", line 129, in <module> unit.set_seize_mode() File "c:\Users\rlagu\Desktop\python\super.py", line 50, in set_seize_mode if Tank.seize.developed == False: AttributeError: type object 'Tank' has no attribute 'seize' PS C:\Users\rlagu\Desktop\python>
 
 
 

답변 3

0

저도 오타 문제일까요? class Unit: def __init__(self, name, hp, speed): self.name = name self.hp = hp self.speed = speed print("{0} 유닛을 생성했습니다".format(name)) def move(self, location): print("{0}: {1} 방향으로 이동합니다. [속도 {2}]"\ .format(self.name, location, self.speed)) def damaged(self, damage): print("{0}:{1}만큼 피해를 입었습니다.".format(self.name, damage)) self.hp -= damage print("{0}: 현재 체력은 {1} 입니다.".format(self.name, self.hp)) if self.hp <= 0: print("{0}: 파괴됐습니다.".format(self.name)) class AttackUnit(Unit): def __init__(self, name, hp, damage, speed): Unit.__init__(self, name, hp, speed) self.damage = damage def attack(self, location): print("{0}: {1} 방향 적군을 공격합니다. [공격력 {2}]".format(self.name, location, self.damage)) class Soldier(AttackUnit): def __init__(self): AttackUnit.__init__(self, "보병", 40, 5, 1) def booster(self): if self.hp >10: self.hp -= 10 print("{0}: 강화제를 사용합니다. (HP 10 감소)".format(self.name)) else: print("{0}: 체력이 부족해 기술을 사용할 수 없습니다.".format(self.name)) class Tank(AttackUnit): siege_developed = False def __init__(self): AttackUnit.__init__(self, "탱크", 150, 35, 1) self.sige_mode = False def set_seige_mode(self): if Tank.siege_developed == False: return if self.siege_mode == False: print("{0} : 시지 모드로 전환합니다.".format(self.name)) self.damage *= 2 self.sige_mode = True else: print("{0}: 시지 모드를 해제합니다.".format(self.name)) self.damage //=2 self.siege_mode = False class Flyable: def __init__(self, flying_speed): self.flying_speed = flying_speed def fly(self, name, location): print("{0}: {1} 방향으로 날아갑니다. [속도 {2}]".format(name, location, self.flying_speed)) 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): self.fly(self.name, location) class Stealth(FlyableAttackUnit): def __init__(self): FlyableAttackUnit.__init__(self,"전투기", 80, 20,5) self.cloaked = False def cloaking(self): if self.cloaked == True: print("{0} : 은폐모드를 해제합니다.".format(self.name)) self.cloaked = False else: print("{0}: 은폐모드를 설절합니다.".format(self.name)) self.cloaked = True

0

1. 2번째 줄 오타 있습니다.

sieze_developed -> seize_developed

 

2.

def set_seize_mode(self):

 

        if Tank.seize.developed == False:
            return
 
여기서 오타 있습니다.
Tank.seize_developed == False:
로 고쳐보세요
 

0

rlagus0629님의 프로필 이미지
rlagus0629
질문자

레이스 : 1시 방향으로 날아갑니다. [속도 5]

[알림] 탱크 시즈 모드 개발 완료.

마린 : 스팀팩을 사용합니다. (HP 10 감소)

마린 : 스팀팩을 사용합니다. (HP 10 감소)

마린 : 스팀팩을 사용합니다. (HP 10 감소)

Traceback (most recent call last):

  File "c:\Users\rlagu\Desktop\python\super.py", line 129, in <module>

    unit.set_seize_mode()

  File "c:\Users\rlagu\Desktop\python\super.py", line 50, in set_seize_mode

    if Tank.seize.developed == False:

AttributeError: type object 'Tank' has no attribute 'seize'

PS C:\Users\rlagu\Desktop\python>

rlagus0629님의 프로필 이미지
rlagus0629

작성한 질문수

질문하기