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

每个格子的生死遵循下面的原则:1)如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变)。2)如果一个... 每个格子的生死遵循下面的原则:
1) 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。
2) 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
3) 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案)。
#include<iostream.h>
#include<windows.h>

struct Cell
{
bool live;
int others;
};

int clrscr()
{

HANDLE hndl = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hndl, &csbi);
DWORD written;
DWORD N = csbi.dwSize.X * csbi.dwCursorPosition.Y +
csbi.dwCursorPosition.X + 1;
COORD curhome = {0,0};

FillConsoleOutputCharacter(hndl, ' ', N, curhome, &written);
csbi.srWindow.Bottom -= csbi.srWindow.Top;
csbi.srWindow.Top = 0;
SetConsoleWindowInfo(hndl, TRUE, &csbi.srWindow);
SetConsoleCursorPosition(hndl, curhome);

return 0;
}

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

for(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();
}
}
以上是我手里的 想要一个不用<windows.h>的函数的
展开
 我来答

答题抽奖

首次认真答题后

即可获得3次抽奖机会,100%中奖。

更多问题
最佳答案
mzhrd
推荐于2017-09-10
mzhrd
采纳数:47 获赞数:85 LV6
擅长:C/C++ VC++ 英雄联盟 手机购买
向TA提问 私信TA
展开全部
#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");//可以用这个清屏
 }
}
热心网友
2018-03-21
展开全部
#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");//可以用这个清屏
 }
}
已赞过 已踩过<
评论 收起
收起 1条折叠回答

为你推荐:

×

类别

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

说明

0/200

提交
取消