1 Star 0 Fork 0

熊磊/fsm

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
fsm_cpp1.cpp 1.76 KB
一键复制 编辑 原始数据 按行查看 历史
mpXiongLei 提交于 2019-12-27 21:56 +08:00 . cpp-1
#include "fsm_cpp1.h"
namespace fsm_cpp1 {
class fsmStartup;
class fsmOnline;
class fsmOffline;
fsm* sFSM[3];
fsm* sCurrent = nullptr;
class fsmStartup :public fsm {
void onPlay(void* arg) override {
std::cout << "fsmStartup onPlay" << std::endl;
}
void onStart(void* arg) override {
std::cout << "fsmStartup onStart" << std::endl;
sCurrent = sFSM[1];
}
};
class fsmOnline :public fsm {
void onPlay(void* arg) override {
std::cout << "fsmOnline onPlay" << std::endl;
}
void onStop(void* arg)override {
std::cout << "fsmOnline onStop" << std::endl;
sCurrent = sFSM[2];
}
void onNext(void* arg)override {
std::cout << "fsmOnline onNext" << std::endl;
}
void onPrev(void* arg) override {
std::cout << "fsmOnline onPrev" << std::endl;
}
void onStart(void* arg)override {
std::cout << "fsmOnline onStart" << std::endl;
}
};
class fsmOffline :public fsm {
void onPlay(void* arg) override {
std::cout << "fsmOffline onPlay" << std::endl;
sCurrent = sFSM[1];
}
void onStop(void* arg) override {
std::cout << "fsmOffline onStop" << std::endl;
}
void onStart(void* arg)override {
std::cout << "fsmOffline onStart" << std::endl;
sCurrent = sFSM[0];
}
};
}
using namespace fsm_cpp1;
void fsm_cpp1_test() {
sFSM[0] = new fsmStartup();
sFSM[1] = new fsmOnline();
sFSM[2] = new fsmOffline();
sCurrent = sFSM[0];
for (int i = 0; i < 100; i++) {
switch (rand() % 5) {
case 0:sCurrent->onPlay(0); break;
case 1:sCurrent->onStop(0); break;
case 2:sCurrent->onNext(0); break;
case 3:sCurrent->onPrev(0); break;
default:sCurrent->onStart(0); break;
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/xlaa/fsm.git
git@gitee.com:xlaa/fsm.git
xlaa
fsm
fsm
master

搜索帮助