一个关于生命游戏的小小程序

在软件工程课上,老师提出了一个有趣的游戏,于是趁着周末在寝室和室友结对编程写了一个小小的程序。

题目如下:

概述:

它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。实际中,你可以设定周围活细胞的数目怎样时才适宜该细胞的生存。如果这个数目设定过低,世界中的大部分细胞会因为找不到太多的活的邻居而死去,直到整个世界都没有生命;如果这个数目设定过高,世界中又会被生命充满而没有什么变化。实际中,这个数目一般选取2或者3;这样整个生命世界才不至于太过荒凉或拥挤,而是一种动态的平衡。这样的话,游戏的规则就是:当一个方格周围有2或3个活细胞时,方格中的活细胞在下一个时刻继续存活;即使这个时刻方格中没有活细胞,在下一个时刻也会“诞生”活细胞。

原则:

每个格子的生死遵循下面的原则:
1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。
2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
3. 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)
代码:
#include
using namespace std;
 
//定义细胞结构体
struct Cell
{
 bool live;
 int  others;
};
 
 //主函数
void main()
{
 
 Cell cell[10][10];
 int i=0;
 int j=0;
 //初始化数组
 for(i = 0;i<10;i++)
  for(j=0;j<10;j++)
  {
   cell[i][j].live=true;
   cell[i][j].others=0;
  }
  //运行细胞
 while(1)
 {
  for(i=0;i<10;i++)
   for(j=0;j<10;j++)
   {
    cell[i][j].others=0;
   }
 
  for( i=0;i<10;i++)
  {
   for(j=0;j<10;j++)
   {
    if(cell[i][j].live)
     cout<<"$ ";
    else
     cout<<"- ";
   }
   cout<=0 && (j-1)>=0 && cell[i-1][j-1].live)
     cell[i][j].others++;
    if((i-1)>=0 && cell[i-1][j].live)
     cell[i][j].others++;
    if((i-1)>=0 && (j+1)<10 && cell[i-1][j+1].live)
     cell[i][j].others++;
    if((j-1)>=0 && cell[i][j-1].live)
     cell[i][j].others++;
    if((j+1)<10 && cell[i][j+1].live)
     cell[i][j].others++;
    if((i+1)<10 && (j-1)>=0 && cell[i+1][j-1].live)
     cell[i][j].others++;
    if((i+1)<10 && cell[i+1][j].live)
     cell[i][j].others++;
    if((i+1)<10 && (j+1)<10 && cell[i+1][j+1].live)
     cell[i][j].others++;
 
    switch(cell[i][j].others)
    {
    case 2:break;
    case 3:cell[i][j].live=true;break;
    default:cell[i][j].live=false;break;
    }
   }
   //Sleep(1000);
   //clrscr();
   system("cls");//可以用这个清屏
 }
}

结果:开始状态:                                                                           运行时:
一个关于生命游戏的小小程序_第1张图片                                           一个关于生命游戏的小小程序_第2张图片       一个关于生命游戏的小小程序_第3张图片

结对编程照片:
一个关于生命游戏的小小程序_第4张图片                           一个关于生命游戏的小小程序_第5张图片

你可能感兴趣的:(一个关于生命游戏的小小程序)