3/28 TIL

나명흠·2023년 3월 28일
0

내일배움캠프 개인과제-
턴제 게임 만들기!

어제, 플레이어와 몬스터를 class로 정하고 턴제 게임을 할 수 있도록 새로운 game class를 만드려고 했다가 싹 갈아 엎었다.

문제점

class player(Character):
     def attack(self, other):
          if att == 1:
            damage = random.randint(self.ad - 2, self.ad + 5)
          elif att == 2:
            self.mp = max(self.mp - 50, 0)
            if self.mp < 50 :
                print("-----마나가 부족합니다. 약한 물리공격으로 대체합니다-----")
                damage = random.randint(self.ad - 5, self.ad + 2)
            else :
                damage = random.randint(self.ap - 5, self.ap + 10)
            damage = random.randint(self.ap - 5, self.ap + 10)```

mp가 50보다 적어야 마나가 부족하여 약한 물리공격으로 대체한다는 코드가 실행되어야 하는데 자꾸 50보다 많은데도 코드가 실행된다.

해결방안

elif att == 2:
            self.mp = max(self.mp - 50, 0)
            if self.mp < 50 :
                print("-----마나가 부족합니다. 약한 물리공격으로 대체합니다-----")
                damage = random.randint(self.ad - 5, self.ad + 2)
            else :
                damage = random.randint(self.ap - 5, self.ap + 10)
            damage = random.randint(self.ap - 5, self.ap + 10)

self.mp = max(self.mp - 50, 0) 이 코드가 else 밑으로 가야했다.
마법공격을 해서 mp가 -50이 되는건 마법공격이 되고 나서 이루어져야 하는데 저대로라면 마나가 있던 없던 마법공격을 선택하면 무조건 mp가 -50이 된다.

mp값은 50~150사이의 랜덤한 값으로 했기 때문에 예를들어 mp: 99인 경우 마법공격을 선택하면 mp: 49가 되고 그 다음 if self.mp<50이 실행되게 되어 문제가 발생했던것!!

해결 코드

class player(Character):
     def attack(self, other):
          if att == 1:
            damage = random.randint(self.ad - 2, self.ad + 5)
          elif att == 2:
            if self.mp < 50 :
                print("-----마나가 부족합니다. 약한 물리공격으로 대체합니다-----")
                damage = random.randint(self.ad - 5, self.ad + 2)
            else :
                damage = random.randint(self.ap - 5, self.ap + 10)
                self.mp = max(self.mp - 50, 0)
            damage = random.randint(self.ap - 5, self.ap + 10)```
            

이유를 알고나니 너무 쉬웠다.. 그래도 맨날 chat.gpt한테 물어보기만 했었는데, 내가 만든 코드를 내가 뜯어보니까 이해도 쉽고 뿌듯했음!!

profile
가보자고

0개의 댓글