生命游戏
假设有int Cells[50][50],即有50*50个小格子,每个小格子里面生命存活(值为1)或者死亡(值为0),通过把所有元素的生命状态输出可以显示出相应的图案。
1.全局变量
int cells[High][Width]; // 所有位置细胞生1或死0 
void gotoxy(int x,int y) //光标移动到(x,y)位置 
{ 
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); 
COORD pos; 
pos.X = x; 
pos.Y = y; 
SetConsoleCursorPosition(handle,pos); 
} 
2.数据初始化
void startup() // 数据初始化 
{ 
int i,j; 
for (i=0;i<High;i++) // 初始化 
for (j=0;j<Width;j++) 
{ 
cells[i][j] = 1; 
} 
} 
3.显示画面
void show() // 显示画面 
{ 
gotoxy(0,0); // 光标移动到原点位置,以下重画清屏 
int i,j; 
for (i=1;i<=High-1;i++) 
{ 
for (j=1;j<=Width-1;j++) 
{ 
if (cells[i][j]==1) 
printf("*"); // 输出活的细胞 
else 
printf(" "); // 输出空格 
} 
printf("\n"); 
} 
Sleep(50); 
} 
4.与用户输入无关的更新
 void updateWithoutInput()  // 与用户输入无关的更新
{   
    int NewCells[High][Width]; // 下一帧的细胞情况
    int NeibourNumber; //统计邻居的个数
    int i,j;
    for (i=1;i<=High-1;i++)
    {
        for (j=1;j<=Width-1;j++)
        {
            NeibourNumber = cells[i-1][j-1] + cells[i-1][j] + cells[i-1][j+1]
                + cells[i][j-1] + cells[i][j+1] + cells[i+1][j-1] + cells[i+1][j] + cells[i+1][j+1];
            if (NeibourNumber==3)
                NewCells[i][j] = 1;  
            else if (NeibourNumber==2)
                NewCells[i][j] = cells[i][j];
            else
                NewCells[i][j] = 0; 
        }
    }
    
    for (i=1;i<=High-1;i++)
        for (j=1;j<=Width-1;j++)
            cells[i][j] = NewCells[i][j];
}
5.与用户输入有关的更新
void updateWithInput() // 与用户输入有关的更新 
{ 
} 
int main() 
{ 
startup(); // 数据初始化 
while (1) // 游戏循环执行 
{ 
show(); // 显示画面 
updateWithoutInput(); // 与用户输入无关的更新 
updateWithInput(); // 与用户输入有关的更新 
} 
return 0; 
} 

https://gitee.com/wjx0229/difficult_team/blob/master/生命游戏.cpp
经过上一次的作业和书本的辅助,开始了分小内容的游戏设计,这个游戏也加入了我没有掌握的数组元素,有难度。
原文:https://www.cnblogs.com/wjx0229/p/10955462.html