以下是一个简单的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。

c++ 制作一个npc状态机包含定时创建与销毁

原文地址: http://www.cveoy.top/t/topic/bD8d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录