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; 
} 

截图

1580541-20190531152602272-865742737.png

代码托管连接

https://gitee.com/wjx0229/difficult_team/blob/master/生命游戏.cpp

实验总结:

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

转载于:https://www.cnblogs.com/wjx0229/p/10955462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值