一个简单的C++ NPC状态机的实现如下:

  1. 定义NPC类,包含NPC的属性和方法:
class NPC {
private:
    int state;  // NPC的状态,0为待机状态,1为攻击状态,2为逃跑状态,3为死亡状态
    int health; // NPC的生命值
public:
    NPC();  // 构造函数
    ~NPC(); // 析构函数
    void setState(int newState); // 设置NPC的状态
    void update(); // 更新NPC的状态
};
  1. 实现NPC类的构造函数和析构函数:
NPC::NPC() {
    state = 0; // 初始状态为待机状态
    health = 100; // 初始生命值为100
    cout << "NPC created!" << endl;
}

NPC::~NPC() {
    cout << "NPC destroyed!" << endl;
}
  1. 实现NPC类的状态设置和状态更新方法:
void NPC::setState(int newState) {
    state = newState;
}

void NPC::update() {
    switch(state) {
        case 0: // 待机状态
            cout << "NPC is idle." << endl;
            break;
        case 1: // 攻击状态
            cout << "NPC is attacking." << endl;
            break;
        case 2: // 逃跑状态
            cout << "NPC is fleeing." << endl;
            break;
        case 3: // 死亡状态
            cout << "NPC is dead." << endl;
            break;
        default:
            cout << "Invalid state!" << endl;
            break;
    }
}
  1. 在主函数中创建和销毁NPC对象:
int main() {
    NPC* npc = new NPC(); // 创建NPC对象
    npc->setState(1); // 设置NPC状态为攻击状态
    npc->update(); // 更新NPC状态
    delete npc; // 销毁NPC对象
    return 0;
}

输出结果为:

NPC created!
NPC is attacking.
NPC destroyed!

注意:在销毁NPC对象时要使用delete关键字,否则会导致内存泄漏。

c++ 制作一个npc状态机包含创建于和销毁

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

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