2019年春第二次课程设计实验报告

2019年春第二次课程设计实验报告

实验项目名称:

生命游戏

功能描述:

假设有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

实验总结:

经过上一次的作业和书本的辅助,开始了分小内容的游戏设计,这个游戏也加入了我没有掌握的数组元素,有难度。

posted @ 2019-05-31 15:26  wjx0229  阅读(146)  评论(0编辑  收藏  举报