解析下列程序#pragma once #include "Weapon.h" #include <memory> #include <vector> class HeadQuarter; class Dragon; class Ninja; class Iceman; class Lion; class Wolf; class City; enum { dragon, ninja, iceman, lion, wolf }; enum { WarriorNum = 5 }; enum { MaxWeaponNum = 10 }; class Warrior { private: virtual void doLogBirth() = 0; public: int id, lifeValue; HeadQuarter* pHeadquarter; int kind; int theAttackValue; string name; vector<shared_ptr<Weapon>> weapons; Warrior(int _kind, HeadQuarter* phq, int _id, int lv, int av); int cityID; int nowWeaponID = 0; static const string Name[WarriorNum]; static shared_ptr<Warrior> create(int _kind, HeadQuarter* phq, int _id, int lv, int av, int _k); virtual void moveForward(int time, int& isOver); void logBirth(int time); int getLifeValue()const { return lifeValue; } int getWeaponNum()const { return weapons.size(); } string getName()const { return name; } int getID()const { return id; } int getKind()const { return kind; } int getCityID()const { return cityID; } int getMaxHurt(); void WolfSteal(int time, Warrior* pEnemy); //保证偷之前weapon有序,且偷之后保持有序 virtual int LionEscape(int time) { return 0; } void oneAttack(Warrior* enemy); void sortWeapons(); void reportSituation(int time); void captureWeapon(Warrior* pEnemy); virtual ~Warrior() {} };
时间: 2023-08-08 17:06:54 浏览: 91
C语言头文件避免重复包含、#pragma once和#ifndef区别
这是一个C++的头文件,定义了一个名为Warrior的类,包含了一些成员变量和成员函数。
其中枚举类型定义了5种Warrior的类型,以及每个Warrior最多可以拥有的武器数量。
类中的成员变量包括ID、生命值、所属阵营指针、种类、攻击值、名称、拥有的武器列表、所在城市ID和当前使用的武器ID。
类中的成员函数包括构造函数、虚函数doLogBirth()、移动函数、记录出生函数、获取生命值、获取武器数量、获取名称、获取ID、获取种类、获取所在城市ID、获取最大攻击值、狼人偷武器函数、狮子逃跑函数、攻击函数、武器排序函数、报告状态函数、夺取武器函数和析构函数。
其中,狼人偷武器函数和夺取武器函数需要保证武器列表有序,并且操作后仍然保持有序。虚函数doLogBirth()没有具体实现,需要在子类中实现。
阅读全文