解析下列程序#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 07:06:54 浏览: 47
这是一个C++的头文件,定义了一个名为Warrior的类,包含了一些成员变量和成员函数。
其中枚举类型定义了5种Warrior的类型,以及每个Warrior最多可以拥有的武器数量。
类中的成员变量包括ID、生命值、所属阵营指针、种类、攻击值、名称、拥有的武器列表、所在城市ID和当前使用的武器ID。
类中的成员函数包括构造函数、虚函数doLogBirth()、移动函数、记录出生函数、获取生命值、获取武器数量、获取名称、获取ID、获取种类、获取所在城市ID、获取最大攻击值、狼人偷武器函数、狮子逃跑函数、攻击函数、武器排序函数、报告状态函数、夺取武器函数和析构函数。
其中,狼人偷武器函数和夺取武器函数需要保证武器列表有序,并且操作后仍然保持有序。虚函数doLogBirth()没有具体实现,需要在子类中实现。
相关问题
我的头文件是这样写的#include <stdio.h> #include <math.h> #include <fstream> #include <iostream> #include <string>//getline #include <sstream> #include "stb_image.h" #pragma comment(lib, "openGL32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux.lib") #include <gl/glaux.h> #include "glew.h" #include "glut.h" #include <vector>,请问如何避免报错gl.h included before glew.h呢
在你的头文件中,应该将 `glew.h` 的引入放在 `gl.h` 的引入之前。因此,你应该将 `glew.h` 的引入语句移到 `gl.h` 的引入语句之前,就像这样:
```
#include <stdio.h>
#include <math.h>
#include <fstream>
#include <iostream>
#include <string>//getline
#include <sstream>
#include "stb_image.h"
#include <gl/glaux.h>
#include <vector>
#include "glew.h"
#include <gl/glut.h>
#pragma comment(lib, "openGL32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glaux.lib")
```
这样就能够避免 `gl.h included before glew.h` 的错误了。
c++#include<mmsystem.h>
引用的两个代码片段都是使用Windows多媒体计时器的C++代码。多媒体计时器是Windows提供的一种高精度计时器,可以用于测量程序的性能和延迟等。下面是一个使用多媒体计时器的C++代码示例:
```c++
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
int main()
{
// 初始化计时器
timeBeginPeriod(1);
// 获取当前时间
DWORD start = timeGetTime();
// 这里放需要计时的代码
for (int i = 0; i < 1000000; i++)
{
// do something
}
// 获取结束时间
DWORD end = timeGetTime();
// 计算时间差
DWORD elapsed = end - start;
// 输出时间差
std::cout << "Elapsed time: " << elapsed << "ms" << std::endl;
// 结束计时器
timeEndPeriod(1);
return 0;
}
```
上面的代码使用了`timeBeginPeriod`和`timeEndPeriod`函数来初始化和结束计时器,使用`timeGetTime`函数获取当前时间,然后计算时间差并输出。需要注意的是,使用多媒体计时器需要包含`<mmsystem.h>`头文件,并链接`winmm.lib`库。