谁可以用c++编一个生命游戏代码 (要尽可能简单明了的)不要网上的 15

每个格子的生死遵循下面的原则: 1) 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。 2) 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变; 3) 在其... 展开
我有更好的答案
推荐于2017-09-10 02:40:10 最佳答案
#include<iostream>
using namespace std;

struct Cell
{
 bool live;
 int  others;
};


void main()
{

 Cell cell[10][10];

 for(int i=0;i<10;i++)
  for(int j=0;j<10;j++)
  {
   cell[i][j].live=true;
   cell[i][j].others=0;
  }
 
 while(1)
 {
  for(int i=0;i<10;i++)
   for(int j=0;j<10;j++)
   {
    cell[i][j].others=0;
   }

  for(int i=0;i<10;i++)
  {
   for(int j=0;j<10;j++)
   {
    if(cell[i][j].live)
     cout<<"$ ";
    else
     cout<<"- ";
   }
   cout<<endl;
  }

  for(int i=0;i<10;i++)
   for(int j=0;j<10;j++)
   {
    if((i-1)>=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");//可以用这个清屏
 }
}

mzhrd

采纳率:37% 擅长: C/C++ VC++ 英雄联盟 手机购买

其他回答

#include<iostream>
#include<windows.h>
using namespace std;
 
struct Cell
{
 bool live;
 int  others;
};
 
 
int main()
{
 
 Cell cell[10][10];
 
 for(int i=0;i<10;i++)
  for(int j=0;j<10;j++)
  {
   cell[i][j].live=true;
   cell[i][j].others=0;
  }
  
 while(1)
 {
  for(int i=0;i<10;i++)
   for(int j=0;j<10;j++)
   {
    cell[i][j].others=0;
   }
 
  for(int i=0;i<10;i++)
  {
   for(int j=0;j<10;j++)
   {
    if(cell[i][j].live)
     cout<<"$ ";
    else
     cout<<"- ";
   }
   cout<<endl;
  }
 
  for(int i=0;i<10;i++)
   for(int j=0;j<10;j++)
   {
    if((i-1)>=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");//可以用这个清屏
 }
}
热心网友| 发布于2018-03-21
评论
收起 1条折叠回答

为您推荐:

×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消