#include <iostream>
#include <string>
using namespace std;

class Human { // 基本クラス
protected:
    string name;
    int life;
public:
    void information() {
        cout << "-------------" << endl;
        cout << "名前:" << name << endl;
        cout << "体力:" << life << endl;
    }
};

class PartyMember : public Human { // 派生クラス1
private:
    int strength;
    string job;
public:
    PartyMember(string name, int life, int strength, string job) {
        this->name = name;
        this->life = life;
        this->strength = strength;
        this->job = job;
    }
    void informationParty() {
        information();
        cout << "腕力:" << strength << endl;
        cout << "職業:" << job << endl;
    }
};

enum Action { ACT_WALK, ACT_REST, ACT_SLEEP }; // モブの行動

class MobCharacter : public Human { // 派生クラス2
private:
    Action action;
public:
    MobCharacter(string name, int life, Action action) {
        this->name = name;
        this->life = life;
        this->action = action;
    }
    void informationMob() {
        information();
        cout << "行動:";
        if (action == ACT_WALK) cout << "散歩" << endl;
        if (action == ACT_REST) cout << "休憩" << endl;
        if (action == ACT_SLEEP) cout << "睡眠" << endl;
    }
};

int main() {
    PartyMember player("クラウド", 1200, 500, "傭兵");
    player.informationParty();
    MobCharacter npc[3] = {
        MobCharacter("通行人1", 100, ACT_WALK),
        MobCharacter("通行人2", 200, ACT_REST),
        MobCharacter("通行人3", 300, ACT_SLEEP)
    };
    for (int i = 0; i < 3; i++) npc[i].informationMob();
}