c++ 45行代码实现 生命游戏-细胞自动机!!!

概念:自动运行的机器

大家知道细胞自动机这个东西吗?当年冯诺依曼发明了计算机,同时也提出了一个概念:有一种机器,只要人为事先设定好,便可以一直自行地执行下去。可惜他早逝,52岁便被癌症带往天堂,到真正实现要到那个人:约翰.康威。他发明了一款连他自己也想不到其影响的游戏,即生命游戏,现在就是我们的细胞自动机。接下来,来看一下ta的运行规则吧。

运行规则:

很简单,也很好理解:

  1. 这是一个只有细胞元的世界,每个细胞元占一格,且只有生与死两种状态;
  2. 现在时刻的状态由上一步骤决定;
  3. 状态变化的规则1:如果一个生细胞元周围存在 2 或 3 个生细胞元,则ta继续生,否则ta将死。
  4. 状态变化的规则2:如果一个死细胞元周围只存在 3 个活细胞元,则ta可以生,否则依旧死。
  5. 注:一个细胞元周围是8个细胞元,是这8个细胞元决定中间那个细胞元的状态

很简单易懂,是么

代码实现

用类实现,8个方向的搜索。直接上代码(为了节省空间,压缩了空行,可能有点难看。一共45行)

#include <iostream>
using namespace std;
class LiveGame{
   
	public:
		bool Map [100][100];
		void rule();
		void printfunc();
	private:
		int wayX[8] = {
   -1, 0, 1, -1
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,让我来回答你的问题。 生命游戏是一种细胞动机,通过简单的规则模拟出细胞在繁殖和死亡的过程。C++可以通过终端页面修改细胞状态,下面是一种实现方式: 1. 定义细胞状态 可以使用一个二维数组来表示细胞状态,其中0表示死亡,1表示存活。 ``` const int ROW = 20; const int COL = 20; int cells[ROW][COL] = {0}; ``` 2. 在终端页面中显示细胞状态 可以使用ASCII码字符来表示细胞状态,例如#表示存活,.表示死亡。 ``` for(int i = 0; i < ROW; i++){ for(int j = 0; j < COL; j++){ if(cells[i][j] == 0){ cout << "."; }else{ cout << "#"; } } cout << endl; } ``` 3. 修改细胞状态 可以通过用户输入来修改细胞状态,例如输入坐标来表示要修改的细胞。 ``` int row, col; cout << "Enter the row and column of the cell you want to change: "; cin >> row >> col; cells[row][col] = 1; ``` 这样,就可以在终端页面中修改细胞状态了。完整的代码可以参考下面的示例: ``` #include <iostream> using namespace std; const int ROW = 20; const int COL = 20; int cells[ROW][COL] = {0}; void display(){ for(int i = 0; i < ROW; i++){ for(int j = 0; j < COL; j++){ if(cells[i][j] == 0){ cout << "."; }else{ cout << "#"; } } cout << endl; } } void change(){ int row, col; cout << "Enter the row and column of the cell you want to change: "; cin >> row >> col; cells[row][col] = 1; } int main(){ display(); change(); display(); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值