// // Created by mcumbrella on 23-5-22. // #ifndef GAMEOFLIFE_AUTOMATON_H #define GAMEOFLIFE_AUTOMATON_H #include <vector> #include <iostream> #include <fstream> #include <string> #include "Cell.h" class Automaton { public: Automaton(int lines, int columns); void init(bool generateRandom = false); // 初始化网格 void run(); // 执行一代演化 void display(); // 显示网格的当前状态 void saveToFile(std::string filename); // 将当前一代保存到文件中 void loadFromFile(std::string filename); // 加载之前保存的一代 void changeCellState(int x, int y); // 更改细胞状态 void revertToPreviousGeneration(); // 返回到前一代的状态 private: int lines; // 网格大小 int columns; std::vector<std::vector<Cell>> grid; // 网格 std::vector<std::vector<Cell>> previousGeneration; // 上一代网格 bool hasPreviousGeneration = false; // 是否有上一代网格 void evolve(); // 演化网格 int countLiveNeighbors(int x, int y); // 统计活邻居的数量 }; #endif //GAMEOFLIFE_AUTOMATON_H介绍代码思路
时间: 2024-01-13 20:05:55 浏览: 80
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
5星 · 资源好评率100%
这个代码实现了 Game of Life 生命游戏的自动机类,其中 `Automaton` 类包含了一些常用的操作函数,如初始化、执行演化、显示网格状态、保存和加载文件等。类中包含了一个二维向量 `grid`,表示网格中的每个细胞的状态,以及一个二维向量 `previousGeneration`,用于保存上一代的状态。在演化过程中,会根据细胞周围的状态来判断细胞下一代的状态,并将当前状态保存到 `previousGeneration` 中。同时,该类还包含了一些实用函数,如更改细胞状态、统计活邻居数量等。通过这些函数的组合,可以实现 Game of Life 生命游戏的自动化演化过程。
阅读全文