오늘 저는 개인 작업을 완료하고 기능을 추가했습니다.
| 오늘 찾은 기능 |
- Python 명령 창 새로 고침: import os 호출 후 os.체계(“분명한”)두번째 다음을 통해 명령 창을 업데이트할 수 있습니다.
- Python 출력의 텍스트 색상 변경: ANSI 이스케이프 코드를 사용하여 색상을 추가할 수 있습니다.
# Color.py
class Colors:
BLACK = '\033(30m'
RED = '\033(31m'
GREEN = '\033(32m'
YELLOW = '\033(33m'
BLUE = '\033(34m'
MAGENTA = '\033(35m'
CYAN = '\033(36m'
WHITE = '\033(37m'
UNDERLINE = '\033(4m'
RESET = '\033(0m'
BRIGHT_BLACK = '\033(90m'
BRIGHT_RED = '\033(91m'
BRIGHT_GREEN = '\033(92m'
BRIGHT_YELLOW = '\033(93m'
BRIGHT_BLUE = '\033(94m'
BRIGHT_MAGENTA = '\033(95m'
BRIGHT_CYAN = '\033(96m'
BRIGHT_WHITE = '\033(97m'
BRIGHT_END = '\033(0m'
따라서 “\033(” 뒤에 “숫자 m”을 추가하면 색상을 지정할 수 있습니다. 이를 지정하는 방법에는 두 가지가 있습니다.
- print(‘\033(30m’ + ‘Hello’) 와 같은 것을 직접 지정하십시오.
- 위의 코드(Color.py)에서와 같이 Colors라는 클래스를 만들고 각 색상을 넣습니다. ANSI 이스케이프 코드를 저장합니다. 그런 다음 print(f'{Colors.RED}Hello’) 또는 print(‘Colors.RED’ + ‘Hello’) 처럼 사용할 수 있습니다. f-string으로 사용하는 것이 더 편리하기 때문에 이것을 사용할 것입니다.
| 추가하고 싶은 것 |
방어와 회복을 스킬에 넣고 싶었는데, 방어의 경우 방어에 성공하면 몬스터의 공격을 무효화하는 방식으로 하고 싶었습니다. 빼기의 한 형태이고, 회복 중에도 최대 체력을 넘지 않도록 하고 싶었다. 그래서 아래와 같이 코드를 작성했습니다.
#def skill(self):
# 3. Defense
elif set == '3':
self.new_power = 0
self.defense = random.randrange(1, 100)
if self.defense <= 30:
self.defense_success = True
if self.hp < self.max_hp:
self.hp = max(self.hp + 25, 0)
if self.mp < self.max_mp:
self.mp = max(self.mp + 25, 0)
print(
f"Successful defense! HP recovers by 25 MP recovers by 25")
else:
self.defense_success = False
print(f"Failed to defend!")
# 4. HP Recovery
elif set == '4':
self.new_power = 0
if self.recovery_item > 0:
if self.hp < self.max_hp:
self.recovery_item = self.recovery_item - 1
self.hp = max(self.hp + 50, 0)
print(f"HP recovers by 50 !")
if self.hp > self.max_hp:
self.hp = self.max_hp
else:
print(f"체력이 가득 차있습니다")
print("="*80)
return self.skill()
else:
print(f"hp물약을 가지고 있지 않습니다")
print("="*80)
return self.skill()
# def attack(self, other):
damage = self.new_power
other.hp = max(other.hp - damage, 0)
...
- self.new_power = 0: 방어 및 복구 시 attack() 함수의 데미지는 self.new_power를 획득하고 데미지를 0으로 주어야 합니다.
- 본인.방어_성공 = 맞습니다: 수업 중 방어_성공 = false를 정의하고 self.defense <= 30이 true인 경우에만 True를 얻고, 나중에 메인 문에서 True이면 몬스터의 attack() 함수를 포함하지 마십시오.
- self.recovery_item += -1 : 클래스로 recovery_item = 2로 정의되며 현재 HP가 max_hp를 초과하지 않는 경우에만 사용할 수 있습니다. 그리고 사용하다보면 하나씩 벗겨져 나갑니다.
| 문제의 일부 |
else:
self.defense_success = False
print(f"Failed to defend!")
방어를 위해 본인.방어_성공 = 잘못된 여기서는 받을 부분만 설정했는데 방어 성공 후 다시 방어 실패하게 만들지 않으면 defense_success는 True입니다.성공 만트라로 남아 있기 때문에 …
또한 체력 회복 중 오류가 발생하여 현재 체력이 max_hp를 초과하는 문제가 있었습니다.
| 해결 |
- 방어의 경우 본문에서 유저-몬스터 순서로 공격이 끝나면 무조건 사용자.방어_성공 = 잘못된 를 사용하여 오류를 방지할 수 있었습니다.
- 복구의 경우 hp > max_hp인 경우 hp = max_hp를 설정하여 오류를 수정할 수 있습니다.