-
34.6 심사문제: 게임 캐릭터 클래스 만들기코딩도장 심사문제모음 2020. 11. 8. 21:12728x90
표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다.
사용한 코드
1. class
2. def
3. self
첫 접근 방법
클래스 이름/ 메서드 이름/ 매개변수 3개 를 이용하기만 하면
문제를 해결 할 수 있다.
풀이
아래와 같이 self, 매개변수를 이용하고 모든 매개변수를 그대로 속성으로 만들어준다.
class Annie: def __init__ (self, health, mana, ability_power): self.health = health self.mana = mana self.ability_power = ability_power
티버라는 메서드를 하나 더 생성하고
티버 메서드에서 속성 a_p를 이용해 피해량을 계속하는 식을 만들어준다.
class Annie: def __init__ (self, health, mana, ability_power): self.health = health self.mana = mana self.ability_power = ability_power def tibbers (self): self.ap = self.ability_power * 0.65 + 400 print('티버 : 피해량', self.ap)
class Annie: def __init__ (self, health, mana, ability_power): self.health = health self.mana = mana self.ability_power = ability_power def tibbers (self): self.ap = self.ability_power * 0.65 + 400 print('티버 : 피해량', self.ap) # AP * 0.65 + 400 health, mana, ability_power = map(float, input().split()) # 511.68 334.0 298 x = Annie(health=health, mana=mana, ability_power=ability_power) x.tibbers() # 티버 : 피해량 593.7
왜 틀린건지 이유를 찾아보았더니 print에서 티버 :(콜론) 사이에 띄어쓰기를해서 틀렸다.
문제를 보면 티버: 가 붙어있음을 확인 할 수 있다.
다른 풀이 (포매팅사용하기)
class Annie: def __init__ (self, health, mana, ability_power): self.health = health self.mana = mana self.ability_power = ability_power def tibbers (self): print('티버 : 피해량 {}'.format(self.ability_power * 0.65 + 400))
속성 ability_power를 그대로 가져와 {}.format 메서드를 사용하면 코드를 1줄 줄일 수 있다.
{}.format(값) // 값의 자리 속성을 그대로 가져와 계산식을 집어넣어도 어짜피 값(정수, 실수)이므로 정상 작동된다.
※ 실제 코딩 도장의 해법과 다를 수 있으며, 답은 여러가지가 존재합니다.
코드 지적 정말 감사히 받겠습니다.
728x90'코딩도장 심사문제모음' 카테고리의 다른 글
35.6 심사문제: 시간 클래스 만들기 (0) 2020.11.10 35.5 연습문제: 날짜 클래스 만들기 (0) 2020.11.09 34.5 연습문제: 게임 캐릭터 클래스 만들기 (0) 2020.11.08 33.6 심사문제: 카운트다운 함수 만들기 (0) 2020.11.06 33.5 연습문제: 호출 횟수를 세는 함수 만들기 (0) 2020.11.06