生命游戏
来源:互联网 发布:node.js代替php 编辑:程序博客网 时间:2024/06/08 09:15
生命游戏又称为元胞自动机,模拟自然界里的生物进化,在自然界中,一个孢子需要一定的生活资源,如果周围的孢子为2个,则维持原状,如果为3个则孢子复活,为他情况则改孢子死亡。元胞自动机在GIS行业中应用很广泛,可以模拟自然界中的进化现象。#include <math.h>#include <ctype.h>int Cell[10][10];int Temp[10][10]; //定义原细胞与临时细胞void Init(){for(int Row=0;Row<10;Row++){for(int Col=0;Col<10;Col++){Cell[Row][Col]=0; //初始化原细胞存活状态,开始为0,为死亡状态Temp[Row][Col]=0; // 初始化临时细胞存活状态,开始为0,为死亡状态}}}void OutPut() //打印输出{for(int Row=0;Row<10;Row++){for(int Col=0;Col<10;Col++){if(Cell[Row][Col]==1)printf("A");elseprintf(" ");}printf("\n");}}void InPut() //输入{ while(1){int Row,Col;scanf_s("%d %d",&Row,&Col);if(0<=Row&&Row<10&&0<=Col&&Col<10)Cell[Row][Col]=1;else if(Row==-1&&Col==-1)break;elseprintf("请输入正确的坐标");}}int CalcNum(int Row,int Col){int Count=0;for(int i=Row-1;i<=Row+1;i++){for(int j=Col-1;j<=Col+1;j++){if(i<0||i>=10||j<0||j>=10)continue;if(Cell[i][j]==1)Count++;}}if(Cell[Row][Col]==1)Count--; //如果原来本身存活,则需要减一,因为是判断该细胞周围的细胞数量return Count;}void CopyCell() //输出一次就需要保存一次状态,为下一次变化做准备{int row, col;for (row = 0; row < 10; row++)for (col = 0; col < 10; col++)Cell[row][col]=Temp[row][col];}int main(){Init();InPut();while(1){OutPut();for(int Row=0;Row<10;Row++){for(int Col=0;Col<10;Col++){switch(CalcNum(Row,Col)) //计算周围细胞数量{case 0:case 1:case 4:case 5:case 6:case 7:case 8:Cell[Row][Col]=0;break;case 2:Cell[Row][Col]=Temp[Row][Col];break;case 3:Cell[Row][Col]=1;break;}}}CopyCell();getchar();int ans = toupper(getchar());if (ans != 'y')break;}return 0;}
0 0
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 生命游戏
- 游戏算法-生命游戏
- "生命游戏",VB
- 生命游戏 题解
- 【模拟】【RQNOJ】生命游戏
- QT 生命游戏模拟
- 算法思考--------生命游戏
- Algorithm Gossip:生命游戏
- 堆和栈的区别
- iPhone:constrainedToSize获取字符串的宽高
- 旧版glibc兼容旅程
- iOS中获取系统相册中的图片
- Windows批处理(cmd/bat)常用命令小结
- 生命游戏
- MVP on Android
- java对象传输流C/S传输对象
- 迅为4412烧写
- 【HDU】 1027 Ignatius and the Princess II
- 润乾集算报表呈现输出之变动行高列宽
- AutoCompleteTextView自动完成文本框简单介绍
- POJ 2752 Seek the Name, Seek the Fame
- 大小转换成M