贪吃蛇实习报告.doc_第1页
贪吃蛇实习报告.doc_第2页
贪吃蛇实习报告.doc_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机实习报告 姓名:王宁班级: 2009211106学号: 09210181班内序号:31指导老师:丘广晖题目:贪吃蛇邮箱:348266485 贪吃蛇实验报告一功能说明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()等等,都需要自己学习老师给的范例,而且我发现要是编写一个稍大的程序,必须先画一个流程图,否则自己是不会知道怎么下手的,而且一个大程序是需要渐进编写的,边写边改的,不可能一步就能考虑周全。 当时蛇出现并且能动时,我的心情激动无比,虽然里面也借鉴了老师给的例子一部分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论