c++ 实现一个状态机 一共3个状态 1秒后自动切换状态 不能使用 switch case 语句,每个状态做一件惊天动地的事
时间: 2024-01-27 14:06:04 浏览: 62
好的,我们可以在状态函数中添加一些惊天动地的操作。具体实现如下:
```c++
#include <iostream>
#include <chrono>
#include <thread>
#include <cstdlib>
using namespace std::chrono_literals;
void state1() {
std::cout << "State 1: Launching a rocket!" << std::endl;
std::cout << "3...2...1...blast off!" << std::endl;
std::cout << std::endl;
}
void state2() {
std::cout << "State 2: Generating a random number!" << std::endl;
int num = std::rand() % 100;
std::cout << "The number is: " << num << std::endl;
std::cout << std::endl;
}
void state3() {
std::cout << "State 3: Printing a heart!" << std::endl;
std::cout << " ♥ ♥" << std::endl;
std::cout << " ♥ ♥ ♥" << std::endl;
std::cout << " ♥ ♥" << std::endl;
std::cout << std::endl;
}
int main() {
std::srand(std::time(nullptr)); // 初始化随机数生成器
void (*states[])() = {state1, state2, state3}; // 函数指针数组,存储所有状态的函数指针
int current = 0; // 当前状态的下标
while (true) {
std::this_thread::sleep_for(1s); // 1秒后自动切换状态
current = (current + 1) % 3; // 切换到下一个状态
states[current](); // 调用当前状态的函数
}
return 0;
}
```
在这个程序中,我们为每个状态函数添加了一些惊天动地的操作。在 `state1()` 中,我们模拟了一次火箭发射,输出了倒计时和 "blast off!" 的声音。在 `state2()` 中,我们生成了一个随机数,并输出这个随机数。在 `state3()` 中,我们输出了一个心形图案。
这个程序的实现方式和之前的程序类似,只是每个状态函数中添加了一些额外的操作。这些操作可以是任何你想象得到的东西,只要足够惊天动地就可以了。
阅读全文