본문 바로가기

개발일지/TIL

TIL 23-03-28

1.파이썬 개인 과제 

 문제점

player_attack_select에서 마나 값 비교 대상을 숫자로 집어넣어서 소모 마나 변경시 변경사항 반영이 어려움

def player_attack_select(self):
    elif player.attack_type == '2' and self.mana >= 5:
                    player.magic_attack(monster)
                    break
                    
def magic_attack(self, other):
        mana_consum = 5

 시도해 본 것들

mana_consum을 전역 변수로 선언하고 magic_attack에서 global로 선언하여 값 변경 시도

mana_consum = 999
# 마나 있는 상태로 마법 공격 시도 먼저 if문 돌고 없으면 다음
            elif player.attack_type == '2' and self.mana >= mana_consum:
                player.magic_attack(monster)
                break
            # 마나 없는 상태로 마법 공격 시도
            elif player.attack_type == '2':
                player.magic_attack(monster)
                continue
                
def magic_attack(self, other):
        global mana_consum
        mana_consum = 5

최초 사용시 마나가 있어도 두 번째 elif문으로 들어가서 마나소모+ 공격을 진행했지만

다음 턴으로 넘어가지 않으면서 다시 턴이 돌아오는 현상 발생

def stage():
    global turn
    turn = 0
    while True:
        turn += 1
        
# 턴 진행수 만큼 회복량 설정
def recovery(self):
        self.mana -= self.max_mana
        recovery = turn*2

위의 상황을 해결하다 중간에 포기했던 턴의 진행수를 받아오는 함수 작성 

 해결 방법

 

 알게 된 점

혼자 만드는 짧은 프로젝트에서도 전역변수를 사용하자 변수의 현재 값을 추적하는 일이 상당히 피곤했다.

전역 변수를 사용을 추천하지 않는 이유를 알 수 있었다.

턴의 진행 수 만큼 몬스터의 회복량을 설정하는 방법을 고민했었는데 이걸 응용해서 사용했다.

 

 

'개발일지 > TIL' 카테고리의 다른 글

TIL 23-03-30  (0) 2023.03.30
TIL 23-03-29  (0) 2023.03.29
TIL 23-03-27  (0) 2023.03.27
TIL 23-03-26  (0) 2023.03.26
TIL 23-03-25  (0) 2023.03.25