请解析下列代码#include <iostream> #include <chrono> #include <thread> class Automaton { public: Automaton(int size) { // 初始化细胞状态 for(int i=0; i<size; i++) { for(int j=0; j<size; j++) { cells[i][j] = rand() % 2; } } } void display() { // 展示当前细胞状态 for(int i=0; i<size; i++) { for(int j=0; j<size; j++) { std::cout << cells[i][j] << " "; } std::cout << std::endl; } } void simulate() { while(true) { // 判断每个细胞的状态 for(int i=0; i<size; i++) { for(int j=0; j<size; j++) { int neighbors = countNeighbors(i, j); if(cells[i][j] == 1) { if(neighbors < 2 || neighbors > 3) { cells[i][j] = 0; } } else { if(neighbors == 3) { cells[i][j] = 1; } } } } // 展示当前细胞状态 display(); // 暂停仿真 std::this_thread::sleep_for(std::chrono::milliseconds(500)); } } void pause() { // 暂停仿真 paused = true; } void resume() { // 恢复仿真 paused = false; } private: int size = 10; int cells[10][10]; bool paused = false; int countNeighbors(int i, int j) { // 计算一个细胞周围的存活细胞数量 int count = 0; for(int x=i-1; x<=i+1; x++) { for(int y=j-1; y<=j+1; y++) { if(x >= 0 && x < size && y >= 0 && y < size && !(x == i && y == j)) { count += cells[x][y]; } } } return count; } }; int main() { Automaton a(10); a.simulate(); return 0; }
时间: 2024-04-02 19:32:15 浏览: 47
#include <iostream> #include<iomanip> using namespace std;九九乘法表
这段代码实现了一个生命游戏(Conway's Game of Life)的基本逻辑。首先,定义了一个Automaton类,包括构造函数、显示函数、模拟函数、暂停和恢复函数以及私有成员变量。其中构造函数用于初始化细胞状态,显示函数用于展示当前细胞状态,模拟函数用于进行生命游戏的仿真,暂停和恢复函数则用于暂停或恢复仿真过程。私有成员变量包括细胞数量、细胞状态数组、是否暂停仿真等。在模拟函数中,通过循环遍历每个细胞,判断其周围存活细胞数量,根据生命游戏的规则更新细胞状态。最后展示当前细胞状态,并暂停一段时间,然后再次进行循环,实现生命游戏的仿真。在main函数中,创建一个Automaton对象,并调用simulate函数进行仿真。
阅读全文