코딩도장 심사문제모음

34.6 심사문제: 게임 캐릭터 클래스 만들기

codermun 2020. 11. 8. 21:12
728x90
반응형

표준 입력으로 게임 캐릭터 능력치(체력, 마나, 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
반응형