파이썬을 이용한 간단한 게임 만들기 개인과제를 제출하기 전에
일반공격 , 스킬 기능을 구현했는데 뭔가 부족한 느낌을 받았다
그래서 포션 기능을 하나 더 추가해 보기로 했다
Class 에 portion 과 portion_use 를 만들고
행동을 선택하는 인풋애서 포션을 사용하면 30의 hp를 회복하는
기능을 구현하고자 했다
인풋에는
#공격 방법 입력받기 / 행동 선택
def get_attack_type():
while True:
attack_type = input("어떤 공격을 하시겠습니까? (일반공격 :'1', 필살기(1회사용) :'2' 포션사용 :'3' ) ")
if attack_type == "1" or attack_type == "2" or attack_type == "3":
return attack_type
else:
print("잘못된 입력입니다. 다시 입력해주세요.")
이렇게 3번을만들어 타입을 줘 포션을 사용할 코드를 불러오게 했고
attack_type = get_attack_type()
#1번을 입력했을때
if attack_type == "1":
attack_power = player.power
print(f"{player.name}가 {player.power}의 피해를 입혔습니다.")
monster.damage(attack_power)
#2번을 압력했을때 (필살기 사용시)
elif attack_type == "2":
magic = player.use_magic()
print(f"{player.name}가 필살기를 사용!! 몬스터가 {magic}의 피해를 입었습니다.")
monster.damage(magic)
#포션을 사용했을때
else:
portion = player.use_Portion()
print(f"{player.name}가 포션을 사용 {player.name}이(가) {portion}만큼 회복했습니다.")
Player.healing(portion)
어택 타입에서는 인풋에서 입력받은 3번이 없지만 1,2번이 아닌 다른숫자는 3밖에없기때문에 else 에 할당해주었다
이렇게 해서 코드를 실행은 했는데 자꾸 에러가 나타났다
TypeError: Player.healing() missing 1 required positional argument: 'portion_use'
오류 코드는 이랬는데 또 뭐가 문제인지 잘 인지를 못해 한참을 뒤져봤다
문제는 Player 는 따로 할당해준 플레이어 값이 없었기때문에 그랬다
내가 변수로 player 로 만들어줬는데 괜한곳에서 다른 클래스를 불러와서 그런 오류가 난거같았다
알아내기 전에 무슨 문제가 있는지 찾는과정에서 문제를 발견하지 못해 어려움을 겪었다
이런 작은 실수 하나가 아예 기능 하나를 구현해내지 못하게하는 결과를만들었다는거에 신경을 더 써야한다는 생각이 들었다