为了实现随机初始化,调用了stdlib.h头文件中的rand函数,在c语言中用来产生一个随机数的函数。srand函数是随机数发生器的初始化函数。
rand()函数每次调用前都会查询是否调用过srand(seed),是否给seed设定了一个值,如果有那么它会自动调用srand(seed)一次来初始化它的起始值。若之前没有调用srand(seed),那么系统会自动给seed赋初始值,即srand(1),自动调用它一次。
voidrandStart()//数据随机初始化{inti,j;srand((unsigned)time(NULL));//让rund函数在每次程序运行中产生不同的随机数for(i=0;i 根据生命游戏演化的规则: 一个由N*M个放个组成的矩形中,每个方格可以包含一个细胞,不在边上的有机体有8个相邻方格。 1.如果一个细胞周围有3个细胞为生,则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 2.如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变 3.在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变) 根据上述规则,用一个临时的二维数组nextCells,来记录Cells的下一个状态。每次对Cells中的点的周围情况neibourNumber进行统计,并据此更新nextCells的值,然后用nextCells更新cells的值。 voidcellUpdate(){intnextCells[Width][High];//下一帧的细胞生命状态intneibourNumber;//细胞周围生存细胞数inti,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){nextCells[i][j]=1;}elseif(neibourNumber==2){nextCells[i][j]=cells[i][j];}elsenextCells[i][j]=0;}}for(i=1;i<=High-1;i++){for(j=1;j<=Width-1;j++){cells[i][j]=nextCells[i][j];}}}3.刷新显示3.1移动光标在这里使用了控制台API函数SetConsoleCursorPosition,这个函数的功能是设置控制台光标坐标(Set--设置、Console--控制台、Cursor--光标、Position--坐标),使用这个函数需要两个参数:第一个参数类型为HANDLE,第二个参数类型为COORD。 HANDLE是用来定义任何类型的句柄。函数功能:获取指定的标准设备的句柄,使用GetStdHandle需要一个参数,参数的取值有三种 1.STDINPUTHANDLE----标准输入句柄, 2.STDOUTPUTHANDLE----标准输出句柄, 3.STDERRORHANDLE----标准错误句柄。 所以在此处赋值给handle的是标准输出句柄 COORD是WindowsAPI中定义的一种结构,表示一个字符在控制台屏幕上的坐标