以下是一个简单的C++ NPC状态机示例,其中包含定时创建和销毁,并且具有行为组:

#include <iostream>
#include <chrono>
#include <thread>
#include <vector>

// 行为接口
class Behavior {
public:
    virtual void execute() = 0;
};

// 跑步行为
class RunBehavior : public Behavior {
public:
    void execute() override {
        std::cout << "Run!" << std::endl;
    }
};

// 跳跃行为
class JumpBehavior : public Behavior {
public:
    void execute() override {
        std::cout << "Jump!" << std::endl;
    }
};

// NPC类
class NPC {
public:
    NPC() {
        m_behaviors.push_back(new RunBehavior());
        m_behaviors.push_back(new JumpBehavior());
    }

    void update() {
        if (m_isActive) {
            // 随机执行一个行为
            int index = rand() % m_behaviors.size();
            m_behaviors[index]->execute();
        }
    }

    void setActive(bool isActive) {
        m_isActive = isActive;
    }

private:
    bool m_isActive = false;
    std::vector<Behavior*> m_behaviors;
};

int main() {
    std::vector<NPC*> npcs;

    // 定时创建和销毁NPC
    for (int i = 0; i < 10; i++) {
        NPC* npc = new NPC();
        npcs.push_back(npc);
        npc->setActive(true);

        std::this_thread::sleep_for(std::chrono::seconds(1));

        npc->setActive(false);
        npcs.erase(std::remove(npcs.begin(), npcs.end(), npc), npcs.end());
        delete npc;
    }

    // 更新NPC状态机
    while (true) {
        for (auto npc : npcs) {
            npc->update();
        }

        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    return 0;
}

在这个示例中,Behavior 类是一个行为的接口,RunBehaviorJumpBehavior 类是 Behavior 接口的具体实现。NPC 类是一个拥有多种行为的状态机,它可以随机执行其中之一。main 函数演示了如何定时创建和销毁 NPC,并且在一个无限循环中更新 NPC 的状态机。

c++ 制作一个npc状态机包含定时创建与销毁npc拥有行为组

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

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