ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 34.6 심사문제: 게임 캐릭터 클래스 만들기
    코딩도장 심사문제모음 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
Designed by Tistory.