- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪吃蛇实习报告.doc
计算机实习报告
姓名:王宁
班级: 2009211106
学号:班内序号: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 程序性能评价
从运行效果来看,优点主要是蛇运动顺畅,屏幕初始化美观,不足是蛇的长度,屏幕的长宽度有限,只能玩几关就不可以玩了。
从程序设计上来说,优点主要有简洁,明了,音乐的设置,速度升级,毒果的设置难度,各种文字移动和色彩的闪耀,不足是没有奖励机制,没有更多的功能。
三.心得体会
刚开始时,一直失败,好多错误,其实就是些基本的错误,比如变量的定义,整型变量的范围,结构体的运用,指针的定义,
您可能关注的文档
- 谈谈对人民币近五年汇率趋势的看法.doc
- 谈资产证券化在中小企业融资中的应用.pdf
- 谈资金盈利性_流动性和安全性的关系.pdf
- 谈金融危机下企业财务风险的控制.pdf
- 谒王庄公路桥灌注桩施工技术交底.doc
- 谭浩强C程序设计答案(第三版).doc
- 谭雅玲汇率的基本定义是保护自己的经济优势.doc
- 谷歌白湧跨境电子商务的数字营销技术.pdf
- 豆奶稳定性的影响因素分析及技术措施.pdf
- 財經電子書股票技術分析教學趨勢指標.pdf
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)