c++ 制作一个npc状态机包含定时创建与销毁
以下是一个简单的C++ NPC状态机,包含定时创建和销毁:
#include <iostream>
#include <chrono>
#include <thread>
#include <vector>
using namespace std;
enum class NPCState {
Idle,
Walk,
Attack,
Dead
};
class NPC {
public:
NPC() : state_(NPCState::Idle) {}
virtual ~NPC() {}
void setState(NPCState state) {
state_ = state;
}
NPCState getState() const {
return state_;
}
virtual void update() {
switch (state_) {
case NPCState::Idle:
// do idle logic
break;
case NPCState::Walk:
// do walk logic
break;
case NPCState::Attack:
// do attack logic
break;
case NPCState::Dead:
// do dead logic
break;
}
}
private:
NPCState state_;
};
class NPCManager {
public:
void createNPC() {
NPCs_.push_back(new NPC());
}
void destroyNPC() {
if (NPCs_.size() > 0) {
delete NPCs_.back();
NPCs_.pop_back();
}
}
void update() {
for (auto npc : NPCs_) {
npc->update();
}
}
private:
vector<NPC*> NPCs_;
};
int main() {
NPCManager manager;
// create NPCs every 5 seconds
for (int i = 0; i < 5; i++) {
manager.createNPC();
this_thread::sleep_for(chrono::seconds(5));
}
// destroy NPCs every 10 seconds
for (int i = 0; i < 5; i++) {
manager.destroyNPC();
this_thread::sleep_for(chrono::seconds(10));
}
return 0;
}
在这个示例中,NPC状态机由一个NPC类和一个NPCManager类组成。NPC类包含一个状态枚举和一个更新函数,可以根据当前状态执行相应的逻辑。NPCManager类维护一个NPC指针向量,并提供创建和销毁NPC的函数以及更新所有NPC的函数。在main函数中,我们使用sleep_for函数在指定的时间间隔内创建和销毁NPC。
原文地址: http://www.cveoy.top/t/topic/bD8d 著作权归作者所有。请勿转载和采集!