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

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

一、实验项目名称:

贪吃蛇游戏编写;

二、实验项目功能描述:

这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制,
同时对小蛇数据的保存,如何实现转弯的效果,吃到食物后如何自行增
加长度;还有就是食物的出现的位置,以及食物的消失;

三、项目模块结构介绍:

  • 第一步:构造小蛇,在画面中出现一条静止的小蛇,并且用二维数组canvas[High][width]
    对应的元素进行相关数据的输出,当其值是0输出空格,值为-1时输出边框#,值为1时
    输出蛇头@,值为大于1的正数时输出蛇身*。在startup()函数中初始化蛇头在画布的中间位置(canvas[High/2][width]=1),蛇头向左依次生成4个蛇身(for(i=1;i<=4;i++))canvas[High/2][width/2-i]=i+1;),元素分别是2,3,4,5,;

  • 第二步:小蛇的移动,列出小蛇分别向右向上运动后对应二维数组元素变换;假设小蛇元素为54321,其中1为蛇头,5432为蛇身,最大值5为蛇尾。实现将所有大于0的元素加1,得到65432,将最大值变为0;即去除原来的尾巴;再根据对应的移动方向将2对应方向的元素由0变成1;达到移动目的;

  • 第三步:玩家控制小蛇移动,在undateWithInput()函数中按a,s,d,w键改变moveDirection的值,然后调用moveSnakeByDirection()实现小蛇不同方向的移动;

  • 第四步:判断游戏的失败,当小蛇和边框或者自身发生碰撞时游戏结束;

  • 第五步:吃食物增加自身长度,当二维数组canvas[High][eidth]的元素值为-2时输出食物数值F,当蛇头碰到食物食物时长度加1;

总体模型:

Int main()
{
  Startup();     //初始化
  While(1)     //游戏循环执行
  {
   Show();     //显示画面
   updateWithoutInput();    //与用户输入无关的更行
   updateWithInput();      //与用户输入有关的更新
}
return 0;
}

四、实现界面展示:

五、代码托管链接:

https://gitee.com/LYL596/game.git

六、实验总结:

这一周这样游戏设计感觉比上一个飞机小游戏的细节要难一点点,上一个飞机小游戏做的还是挺成功的,同时自己设计的游戏,玩起来感觉就是很不错,虽然说吧画面看起来有一点点别扭,但是这个都不是事,阻挡不了成功的喜悦。经过一个星期对git的使用,对git上传代码,建立仓库操作还是很熟练,消除了以前怎样上传代码,这个游戏完成了,下一个游戏代码怎样上传这一些问题;贪吃蛇这个游戏在编写过程中遇到sleep()这个在给定的代码头文件不存在,然后就一直运行不了,最后去百度查找之后,需要加一个头文件#include <unistd.h>,其次书本上提供的代码感觉存在一点点问题,起初给定的移动代码,到后面却没有了;然后再运行的时候没有蛇头,这个就属于粗心大意,赋值打错了;这个游戏最难的地方就是小蛇的移动,如果还是书本提供,自己很难想到怎样去实现移动这一操作;每一次完成一个游戏自己感觉还是非常高兴的,毕竟努力的成果。慢慢的应该向更难的方向进军了;

posted @ 2019-05-31 20:28  凉薄。。。  阅读(128)  评论(0编辑  收藏  举报