inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

코딩이 안되는데, 이유를 잘 모르겠습니다......

233

레몬 녹차 (탈퇴)

작성한 질문수 0

0

안녕하세요, 선생님

질문이 있습니다.

제 코딩에서 처음 오류 뜨는 게 문법적 오류인데 

 else##ERROR 문법적 오류
print("{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다.".format(self.name))

아무리 봐도 저기에 문법적 오류가 없어서...

제 노트북이 잘못된 건지 제가 코딩을 이상하게 했는지 여쭤보고 싶습니다...

처음에 비주얼 코드에 파이썬 프로그램을 잘못 받아서 실행이 안되더라고요...! 그래서 지금은  구글의 colab을 이용하고 있습니다...

  

#########################[ERROR]

from random import*


#일반 유닛

class Unit:

  def __init__(selfnamehpspeed):

    self.name=name

    self.hp=hp

    self.speed=speed

    print("{0} 유닛이 생성됐습니다.".format(self.name))


    def move(selflocation):

      print("{0} : {1} 방향으로 이동합니다 [속도 {2}]"\

            .format(self.name, location, self.speed))

    def damaged(selfdamage):

      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__(selfnamehpspeed):

   Unit.__init__(self, name, hp, speed)

   self.damage=damage 


   def attack(selflocation):

     print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]".format(self.name, location, self.damage))


#마린

class Marine(AttackUnit):

  def __init__(self):

    AttackUnit.__init__(self"마린"4015)


    def stimpack(self):

      if self.hp > 10:

        self.hp -= 10

        print("{0} : 스팀팩을 사용합니다. (HP 10 감소)".format(self.name))

        else##ERROR 문법적 오류

          print("{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다.".format(self.name))


#탱크

class Tank(AttackUnit):

  seize_developed = False ##[?]  AttackUnit.__init__(~) 밑에 넣으면 안되나? 

  

  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))

        seize.damage*=2 

        self.seize_mode = True 

      # 현재 시즈모드일 때 시즈모드 해제

      else:

        print("{0} : 시즈모드를 해제합니다.".format(self.name))

        self.damage/=2

        self.seize_mode = False


#비행기        

class Flyable:

  def __init__(selfflying_speed):

    self.fly=flying_speed

    def fly(selfnamelocation):

      print("{0} : {1} 방향으로 날아갑니다. [속도 {2}]"\

            .format(name, location, self.flying_speed))


#공격하는 비행기

class FlyableAttackUnit(AttackUnitFlyable):

  def __init__(selfnamehpdamageflying_speed):

    AttackUnit.__init__(self, name, hp, 0, damage) 

    Flyable.__init__(self, flying_speed)

    def move(selflocation):

      print("[공중 유닛 이동]")

      self.fly(self.name, location) ##ERROR


#레이스

class Wraith(FlyableAttackUnit):

  def __init__(self):

    FlyableAttackUnit.__init__(self"레이스"80205)

    self.clocked = False


    def clocking(self): 

      if self.clocked == True:

        print("{0} : 클로킹 모드 해제합니다.".format(self.name))

        self.clocked == False

        else:

          print("{0} : 클로킹 모드로 변경합니다.".format(self.name))

          self.clocked == True


def game_start():

  print("[알림] 새로운 게임을 시작합니다.")


def game_over():

  print("Player : gg"#good game

  print("[Player] 님이 게임에서 퇴장하셨습니다")


 game_start()


 m1=Marine()

 m2=Marine()

 m3=Marine()

 t1=Tank()

 t2=Tank()

 w1=Wraith


##유닛 일괄 관리##

attack_units=[]

attack_units.append(m1)

attack_units.append(m2)

attack_units.append(m3)

attack_units.append(t1)

attack_units.append(t2)

attack_units.append(w1)


for unit in attack_units:

  unit.move("1시")


Tank.seize_developed=True

print("[알림] 탱크 시즈 모드 개발이 완료됐습니다.")


###공격 모드 준비!!###

for unit in attack_units:

  if isinstance(unit, Marine): #이 유닛은 마린 클래스의 이스인스텐스다.

    unit.stimpack()

    elif isinstance(unit, Tank):

      unit.set_seize_mode()

      elif isinstance(unit, Wraith):

        unit.clocking()

        #마린 스팀팩, 탱크 시즈모드, 레이스 클로킹


#공격은 랜덤으로 받음

for unit in attack_units:

  unit.damaged(randint(521))


game_over()        

python

답변 1

0

Jeong su Park

    def stimpack(self):

      if self.hp > 10:

        self.hp -= 10

        print("{0} : 스팀팩을 사용합니다. (HP 10 감소)".format(self.name))

        else##ERROR 문법적 오류

          print("{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다.".format(self.name))
이런식으로 되어있습니다.
if문 줄간격이 잘못되어서 에러 났을겁니다.
    def stimpack(self):

      if self.hp > 10:

        self.hp -= 10

        print("{0} : 스팀팩을 사용합니다. (HP 10 감소)".format(self.name))

        else##ERROR 문법적 오류

          print("{0} : 체력이 부족하여 스팀팩을 사용하지 않습니다.".format(self.name))
아래 코드로 변경해서 사용하세요.

quiz 8 오류 문제

0

69

1

str() 작성 위치

0

51

1

아나콘다

0

60

1

윈도우 설치 도와주세요

0

74

1

std_weight함수에서weight만return가능한가요?

0

67

1

오른쪽위 실행버튼을 누르면 터미널에 에러가 뜨고 컨트롤+F5를 누르면 에러가 안뜹니다.

0

34

1

설치해서 시작하는데 문제가 있습니다.

0

69

1

함수 입력할 때 설명 툴팁 나오게 하려면 어떻게 하나요?

0

103

1

2장 환경설정 문의

0

73

1

스타크래프트 프로젝트

0

74

1

python 파일명.py 입력시 Python 출력

0

133

1

로드맵 질문있습니다!

0

85

2

오류

0

74

1

질문 있습니다.

0

73

1

블로그에 학습한 내용을 정리해도 괜찮을까요?

0

171

1

#퀴즈 3의 5번 질문

0

71

1

print("ㅋ"*5) 에 대한 결과가 도출되지 않습니다

0

80

1

가변인자의 위치가 중요한가요?

0

79

1

vscode옛날 버전 설치

0

220

1

글자색상이 선생님처럼 안나옵니다

0

186

1

슬프네

0

155

1

quiz 6번 관련 문의입니다.

0

129

1

퀴즈#3에 대해서 이렇게 작성해도 되나요?

0

193

1

피드백 부탁드립니다

0

93

1