// 숙제 /// > CharacterJob을 상속 받은 Warrior와 Mage를 만듭니다. // -- output -- /// > 직업 : 전사 /// > 무기 : 대검 /// > 방어력 : 10 /// > 직업 : 마법사 /// > 무기 : 두터운 지팡이 /// > 마력 : 15 |
#include <iostream>
using namespace std;
namespace Enum
{
enum Job
{
Warrior, Mage
};
enum Weapon
{
대검, 지팡이
};
}
class CharacterJob
{
private:
Enum::Job job;
Enum::Weapon weapon;
public:
void SetCharacterJobInfo(Enum::Job job, Enum::Weapon weapon)
{
this->job = job;
this->weapon = weapon;
}
void PrintCharacterJobInfo()
{
cout << "직업 : " << ((job == Enum::Job::Warrior) ? "전사" : "마법사") << endl;
cout << "무기 : " << ((weapon == Enum::Weapon::대검) ? "대검" : "두터운 지팡이") << endl;
}
};
class Warrior : public CharacterJob
{
private:
int defence;
public:
void SetWarriorInfo(Enum::Job job, Enum::Weapon weapon, int defence)
{
SetCharacterJobInfo(job, weapon);
this->defence = defence;
}
void PrintWarriorInfo()
{
PrintCharacterJobInfo();
cout << "방어력 : " << defence << endl;
}
};
class Mage : public CharacterJob
{
private:
int mp;
public:
void SetMageInfo(Enum::Job job, Enum::Weapon weapon, int mp)
{
SetCharacterJobInfo(job, weapon);
this->mp = mp;
}
void PrintMageInfo()
{
PrintCharacterJobInfo();
cout << "마력 : " << mp << endl;
}
};
int main()
{
Warrior* player1 = new Warrior();
player1->SetWarriorInfo(Enum::Warrior, Enum::대검, 10);
player1->PrintWarriorInfo();
Mage* player2 = new Mage();
player2->SetMageInfo(Enum::Mage, Enum::지팡이, 15);
player2->PrintMageInfo();
delete player1;
player1 = nullptr;
delete player2;
player2 = nullptr;
return 0;
}
내가 밤새서 만들어간 코드
지금은 무기 2가지, 직업 2가지라 열거형으로도 괜찮았지만 그 이상으로 늘었을 때 열거형은 힘들 수 있다고 하셨다.
부족함이 많지만 그래도 내 힘으로 혼자 해낸 코드 중 하나이다...
값져...ㅠㅠㅠㅠㅠㅠㅠ
밤새서 했는데 정말 다행이다.
처음에는 player->SetWarriorInfo(Warrior, 대검, 10); 해서 방어력(, 마력)이 출력이 안됐었는데 Enum 안에 있는 Warrior와 대검임을 Enum::으로 지정해주니 드디어 됐다!
또, CharacterJob player = new CharacterJob();이 아닌 Warrior와 Mage로 각각 객체생성? 해줘야 한다.
player도 구분해야 한다고 하셔서 1,2를 붙여봤는데 이게 맞겠지?
'혼자서 이건가 아닌가 아리송 마리송! > #include <iostream>' 카테고리의 다른 글
C++_열혈_bool (0) | 2021.08.22 |
---|---|
C++_복습_상속 (0) | 2021.08.19 |
C++_문제_클래스_에어컨 만들기 (0) | 2021.08.19 |
C++_복습_동적할당,포인터 (0) | 2021.08.19 |
C++_열혈_함수오버로딩 (0) | 2021.08.19 |