马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define High 25
#define Width 50
int cells[High][Width];
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[i][j] = 1;
}
void show()
{
gotoxy(0, 0);
int i, j;
for(i = 0; i <= High; i++)
{
for(j = 0; j <= Width; j++)
{
if(cells[i][j] == 1)
printf("*");
else
printf(" ");
}
printf("\n");
}
Sleep(50);
}
void updateWithoutInput()
{
int NewCells[High][Width]; //问题所在
int NeibourNumber;
int i, j;
for(i = 0; i <= High - 1; i++)
{
for(j = 0; 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];
}
void updateWithInput()
{
}
求助!为什么需要再设一个数组来保存下一帧的数据呢?为什么不能直接给原数组赋值呢?比如void updateWithoutInput()
{
for(i = 0; i < High; i++)
for(j = 0; j < Width; j++)
{
k = cells[i - 1][j] + cells[i + 1][j] + cells[i][j - 1] + cells[i][j + 1] + cells[i + 1][j + 1] +
cells[i + 1][j - 1] + cells[i - 1][j + 1] + cells[i - 1][j - 1];
if(k == 3)
cells[i][j] = 1;
if(k == 2)
;
else
cells[i][j] = 0;
}
}
求大佬解答,发现自己写的代码达不到游戏效果 |