- 相关推荐
贪吃蛇实习报告
一.功能说明
1.1总体功能说明
概况: 一条蛇在密闭的围墙内,在围墙内出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。如果蛇在移动的过程中,撞到墙壁或身体的交叉(蛇头撞到自己的身体),则游戏结束。
特色:①暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。
②速度调节功能:当分数达到某个值后,对蛇的移动速度进行一定的提升。 ③毒果:增加另一种的毒果食物,蛇吃到该种食物后gameover。
④音效功能:吃掉食物、撞墙、在游戏结束时有不同的音效。
1.2用户界面
主要是在围墙可以控制蛇吃到果实,同时分数就会升一分。侧边栏标出了主要的功能键和等级,积分。
1.3使用方法
上下左右键控制蛇的运动,还有任意键控制游戏开始,空格键控制暂停,当游戏的得分超过一定数,蛇的速度就会加快,
二.程序设计说明2.1 总体设计框架
2.2 关键算法描述
算法一:
自定义函数:
void movesnake(HANDLE hOutput,int snakex[],int snakey[],int len,WORD wColors[]); 移动蛇的函数,参数主要是蛇的坐标
void fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]); 产生水果的函数,参数主要是蛇的坐标,和水果的坐标。使用了数组和指针
void p_fruit(HANDLE hOutput,int snakex[],int snakey[],int *x ,int *y,WORD wColors[]); void put_fruit(int *x,int *y,int len,int snakex[],int snakey[]);
放置果实的函数
int level(HANDLE handle,int s,int p,char buf[],WORD wColors[]);
等级判断函数,传递了一个存放分数的数组,速度,分数参数
算法二:
系统函数
textout(HANDLE handle,int x,int y,WORD Wcolors[],” “)
专门用来输出一些字符,图案,主要参数就是字符的横纵坐标
_kbhit()
检测是否有按键按下
_getch()
获取按键的值
Sleep(n)
是程序休眠n毫秒
srand( (unsigned)time( NULL ));
随机数的种子函数,以时间做参数
rand()
产生伪随机数序列,后面一般会跟%n,代表取0到n的整数。
2.3 程序设计的难点和关键点
⑴ 蛇的图形的输出及蛇的移动方向。蛇头要用一个二维数组表示,身体要随蛇头一起运动。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,而且转弯的时候会出现断裂。
⑵ 检测蛇有无撞到食物、围墙或是自己的身体。当蛇开始移动之后,需要判断蛇头情况,然后根据位置是空白、食物、围墙还是蛇的身体来做出相应的反应。可以用一个二维数组来表示整个场景,对不同的地方赋予不同的值。
⑶ 果实的随机产生。当食物被吃掉后,要重新随机产生。利用随机函数rand产生随机数并将该随机数布置到符合场景大小的范围中来,而且不能和蛇身重叠了,所以要判断蛇身后在出现果实,以此作为食物位置的横纵坐标。
2.4 调试的方法
问题一: 蛇头吃到果实的表示,起初简单认为只要果实和蛇头初始坐标重合,就代表吃到了果实,可是忽略了任何图形和文字在c++中横坐标都占两格,也就是果实和蛇头都有两个横坐标,但蛇头从果实的边缘擦过,他也会吃了果实,但是坐标没有重合,下一个果实也就不会出现,然后我就想到把它们的坐标都变成偶数就可以实现了重合。
问题二:当撞到墙或者自己之后,蛇不会停下,而是继续往前走,然后我就用了一个停止函数getch()。
问题三:果实出现的时候,不能和蛇身重合,所以需要从蛇头一节一节的判断之后,才可以出现果实。
2.5 程序性能评价
从运行效果来看,优点主要是蛇运动顺畅,屏幕初始化美观,不足是蛇的长度,屏幕的长宽度有限,只能玩几关就不可以玩了。
从程序设计上来说,优点主要有简洁,明了,音乐的设置,速度升级,毒果的设置难度,各种文字移动和色彩的闪耀,不足是没有奖励机制,没有更多的功能。
三.心得体会
刚开始时,一直失败,好多错误,其实就是些基本的错误,比如变量的定义,整型变量的范围,结构体的运用,指针的定义,函数的调用等等,通过这些问题才发现自己学习的知识是那么不牢固。再有就是些更深难度的函数,自己以前没有学过,比如textout,getch(),rand()等等,都需要自己学习老师给的范例,而且我发现要是编写一个稍大的程序,必须先画一个流程图,否则自己是不会知道怎么下手的,而且一个大程序是需要渐进编写的,边写边改的,不可能一步就能考虑周全。
当时蛇出现并且能动时,我的心情激动无比,虽然里面也借鉴了老师给的例子一部分,可是毕竟是自己自学,编出来的,所以没有什么是不能做的,起初想想都觉得自己是不可能编出那么复杂的游戏,可是当自己真的编出来的时候,才会相信自己是有能力的。
而且我们这次所学的函数,还有一些其它的小技巧,我想对以后的编程都会有帮助的。
【贪吃蛇实习报告】相关文章:
贪吃蛇作文(通用57篇)11-19
大学实习报告实习报告01-07
大学实习报告实习报告5篇02-17
实习报告12-06
实习的报告06-17
实习律师实习报告08-04
金工实习的实习报告09-01
社会实习实习报告12-01
顶岗实习的实习报告02-05