C语言生命游戏的小问题
#include <stdio.h>#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define High 25
#define Width 50
int cells;
void gotoxy(int, int);
void starup();
void show();
void updateWithoutInput();
void updateWithInput();
int main()
{
starup();
while(1)
{
show();
updateWithoutInput();
updateWithInput();
}
return 0;
}
void gotoxy(int x, int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void starup()
{
int i, j;
for(i = 0; i < High; i++)
for(j = 0; j < Width; j++)
cells = 1;
}
void show()
{
gotoxy(0, 0);
int i, j;
for(i = 0; i <= High; i++)
{
for(j = 0; j <= Width; j++)
{
if(cells == 1)
printf("*");
else
printf(" ");
}
printf("\n");
}
Sleep(50);
}
void updateWithoutInput()
{
int NewCells; //问题所在
int NeibourNumber;
int i, j;
for(i = 0; i <= High - 1; i++)
{
for(j = 0; j <= Width - 1; j++)
{
NeibourNumber = cells + cells + cells + cells + cells +
cells + cells + cells;
if(NeibourNumber == 3)
NewCells = 1;
else if(NeibourNumber == 2)
NewCells = cells;
else
NewCells = 0;
}
}
for(i = 1; i <= High - 1; i++)
for(j = 1; j <= Width - 1; j++)
cells = NewCells;
}
void updateWithInput()
{
}
求助!为什么需要再设一个数组来保存下一帧的数据呢?为什么不能直接给原数组赋值呢?比如
void updateWithoutInput()
{
for(i = 0; i < High; i++)
for(j = 0; j < Width; j++)
{
k = cells + cells + cells + cells + cells +
cells + cells + cells;
if(k == 3)
cells = 1;
if(k == 2)
;
else
cells = 0;
}
}
求大佬解答,发现自己写的代码达不到游戏效果 k = cells + cells + cells + cells + cells +
cells + cells + cells;
兄弟,虽然你这个代码我只能看懂一些,但是这里很明显,i,i+1,i-1或者j,j-1,j+1都是有联系的,直接给原数组赋值,岂不是破坏了逻辑结构,给另一个数组赋值,正好顺其形式~~ 类似于辛普森的公式~额,可能你不了解辛普森,但是就是这样的吧,应该应该
页:
[1]