500error
[Cos Pro 1급, Python] 4차 7번 : RPG스토리 본문
반응형
문제
게임에 몬스터, 전사, 힐러 세 종류의 유닛이 있습니다.
유닛들의 공격과 힐링에 따른 체력치의 변화를 계산하기 위해 아래와 같이 Unit, Monster, Warrior, Healer 클래스를 작성했습니다.
![](https://blog.kakaocdn.net/dn/eE66E5/btsFnYBEnRc/QYo7Kicfd1hl6qpe5yWiM0/img.png)
* Unit :
* Unit : 유닛을 나타내는 클래스입니다.
* HP : 유닛의 체력을 나타냅니다. 유닛의 초기 체력은 1,000입니다.
* under_attack : 유닛이 공격을 받으면 유닛의 체력을 감소시킵니다.
* Unit : 유닛을 나타내는 클래스입니다.
* HP : 유닛의 체력을 나타냅니다. 유닛의 초기 체력은 1,000입니다.
* under_attack : 유닛이 공격을 받으면 유닛의 체력을 감소시킵니다.
* Monster :
* Monster : 몬스터를 나타내는 클래스이며 Unit을 상속합니다.
* attak_point : 몬스터의 공격력 입니다.
* under_attack : 몬스터가 공격을 받으면 몬스터의 체력을 감소시킵니다.
* attack : 몬스터의 attack_point를 return 합니다.
* Monster : 몬스터를 나타내는 클래스이며 Unit을 상속합니다.
* attak_point : 몬스터의 공격력 입니다.
* under_attack : 몬스터가 공격을 받으면 몬스터의 체력을 감소시킵니다.
* attack : 몬스터의 attack_point를 return 합니다.
* Warrior :
* Warrior : 전사를 나타내는 클래스이며 Unit을 상속합니다.
* attak_point : 전사의 공격력 입니다.
* under_attack : 전사가 공격을 받으면 전사의 체력을 감소시킵니다.
* attack : 전사의 attack_point를 return 합니다.
* Warrior : 전사를 나타내는 클래스이며 Unit을 상속합니다.
* attak_point : 전사의 공격력 입니다.
* under_attack : 전사가 공격을 받으면 전사의 체력을 감소시킵니다.
* attack : 전사의 attack_point를 return 합니다.
* Healer :
* Healer : 힐러를 나타내는 클래스이며 Unit을 상속합니다.
* healing_point : 힐러의 회복치 입니다.
* under_attack : 힐러가 공격을 받으면 힐러의 체력을 감소시킵니다.
* healing : 대상 유닛의 체력을 healing_point 만큼 회복시킵니다. 회복 후 대상 유닛의 체력은 기본 체력 1,000보다 커질 수 있습니다.
* Healer : 힐러를 나타내는 클래스이며 Unit을 상속합니다.
* healing_point : 힐러의 회복치 입니다.
* under_attack : 힐러가 공격을 받으면 힐러의 체력을 감소시킵니다.
* healing : 대상 유닛의 체력을 healing_point 만큼 회복시킵니다. 회복 후 대상 유닛의 체력은 기본 체력 1,000보다 커질 수 있습니다.
게임에서 각 유닛들이 다음과 같이 행동 했을 때, 몬스터, 전사, 힐러의 남은 체력을 구하려 합니다.
* 몬스터가 전사와 힐러를 한 번씩 공격했습니다.
* 전사가 몬스터를 한 번 공격했습니다.
* 힐러가 몬스터와 전사의 체력을 한 번씩 회복했습니다.
* 전사가 몬스터를 한 번 공격했습니다.
* 힐러가 몬스터와 전사의 체력을 한 번씩 회복했습니다.
몬스터의 공력력 monster_attack_point, 전사의 공격력 warrior_attack_point, 힐러의 회복치 healing_point가 매개변수로 주어질 때, 각 유닛이 행동을 마친 후 몬스터, 전사, 힐러의 남은 체력을 순서대로 리스트에 담아 return 하도록 solution 함수를 작성하려 합니다. 위 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.
코드
class Unit:
def __init__(self):
self.HP = 1000
def under_attack(self, damage):
pass
class Monster(Unit):
def __init__(self, attack_point):
super().__init__()
self.attack_point = attack_point
def under_attack(self, damage):
self.HP -= damage
def attack(self):
return self.attack_point
class Warrior(Unit):
def __init__(self, attack_point):
super().__init__()
self.attack_point = attack_point
def under_attack(self, damage):
self.HP -= damage
def attack(self):
return self.attack_point
class Healer(Unit):
def __init__(self, healing_point):
super().__init__()
self.healing_point = healing_point
def under_attack(self, damage):
self.HP -= damage
def healing(self, unit):
unit.HP += self.healing_point
def solution(monster_attack_point, warrior_attack_point, healing_point):
monster = Monster(monster_attack_point)
warrior = Warrior(warrior_attack_point)
healer = Healer(healing_point)
monster.under_attack(warrior.attack())
warrior.under_attack(monster.attack())
healer.under_attack(monster.attack())
healer.healing(warrior)
healer.healing(monster)
answer = [monster.HP, warrior.HP, healer.HP]
return answer
monster_attack_point = 100
warrior_attack_point = 90
healing_point = 30
ret = solution(monster_attack_point, warrior_attack_point, healing_point)
print("solution 함수의 반환 값은", ret, "입니다.")
반응형
'알고리즘 > 파이썬' 카테고리의 다른 글
[Cos Pro 1급, Python] 4차 9번 : 분침과 시침의 각도 구하기 (0) | 2024.02.29 |
---|---|
[Cos Pro 1급, Python] 4차 8번 : n번째로 작은 수 구하기 (0) | 2024.02.29 |
[Cos Pro 1급, Python] 4차 6번 : 자아도취 수 (0) | 2024.02.29 |
[Cos Pro 1급, Python] 4차 4번 : 마방진 문제 (0) | 2024.02.29 |
[Cos Pro 1급, Python] 4차 5번 : 규칙에 맞는 숫자 생성 (0) | 2024.02.29 |
Comments