当前位置:网站首页 > 游戏 >

C++: 生命游戏(模拟细胞群演化)

来源:www.999sf.com | 编辑:999搜服 | 发布时间:2016-05-29 13:10

小编导读:

生命游戏是由英国剑桥大学数学家John Conway提出的,游戏的规则是这样的,在一个M*N棋盘上,每#26684;只有两个状态, “生”和“死”,分别表示是否被一个生命棋子所

生命游戏是由英国剑桥大学数学家John Conway提出的,游戏的规则是这样的,在一个M*N棋盘上,每格只有两个状态, “生”和“死”,分别表示是否被一个生命棋子所占有.每个方格有八个邻格,游戏的规则如下:
以上就是C++: 生命游戏(模拟细胞群演化)的全文介绍,希望对您学习和使用c++编程开发有所帮助.

#include<iostream> #include<ctime> #include<cstdlib> #include<unistd.h> using namespace std; void init(); void printArea(); void evol(); int surroundingLifeCount(int y, int x); bool** cells; int lenArea; int amount; int main(void) { cout << "输入网格宽度: "; cin >> lenArea; cells = new bool*[lenArea]; for(int i=0;i<lenArea;i++) cells[i] = new bool[lenArea]; cout << "输入初始个数: "; cin >> amount; init(); while(true) { system("cls"); printArea(); evol(); sleep(1); } } void init() { srand(time(NULL)); for(int i=0;i<lenArea;i++) for(int j=0;j<lenArea;j++) cells[i][j] = false; for(int i=0;i<amount;i++) { int m = rand()%lenArea,n = rand()%lenArea; if(cells[m][n]) {i--;continue;} else cells[m][n] = true; } } void printArea() { for(int i=0;i<lenArea;i++) { for(int j=0;j<lenArea;j++) if(cells[i][j]) cout << " " << "*"; else cout << " "; cout << endl; } } void evol() { int lifeCount, x, y; for(int i=0;i<lenArea;i++) { for(int j=0;j<lenArea;j++) { lifeCount = surroundingLifeCount(i,j); if(cells[i][j]) if(lifeCount<2 || lifeCount>3) cells[i][j] = false; if(cells[i][j]==false && lifeCount==3) cells[i][j] = true; } } } int surroundingLifeCount(int y, int x) { int curY, curX; int lifeCount = 0; for(curY=y-1;curY<=y+1;curY++) for(curX=x-1;curX<=x+1;curX++) if( !(curX==x&&curY==y) && curY>=0 && curY<lenArea && curX>=0 && curX<lenArea && cells[curY][curX]) lifeCount++; return lifeCount; }

用C++进行摸拟


游戏中的所有生命棋子依据上述确定的局部规则作同步更新,一代繁殖一代地进行着。
a) 对于处在“生”状态的格,若八个邻居中当前有2个或3个“生命”,则继续保持存活状态,否则在下一个状态,将因过于孤独或过于拥挤而死亡.
b) 对于处在“死”态的空格,若八个邻格中有3个“生命”,则该格在下一状态将转变为“生命”(代表繁衍过程),否则继续空着.

文章-C++: 生命游戏(模拟细胞群演化),是由http://999sf.com提供,转载请注明版权出处!

上一篇:游戏人的造谣能叫造谣吗?|葡萄语录

下一篇:也都是可以来到这个平台上