ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:45.94KB ,
资源ID:17796070      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17796070.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(贪吃蛇课程设计报告Word格式文档下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

贪吃蛇课程设计报告Word格式文档下载.docx

1、该方案的好处是系统自动生成软件框架,设计者只需填充编写的代码即可,程序设计比较复杂,对于编程能力不强的同学来说难度较大。方案二:基于easyX设计该方案的好处是设计者只需编写程序文件,完成后编译即可生成可执行文件,编程前需要先安装easyX图形库。由于编程能力不强,方案二设计简单,易于调试,故选择方案二。3.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。游戏界面:1)开始游戏(加载并开始)2)暂停游戏(从当前进度结束)3)重新开始(在某一时刻暂停后可以继续接着玩)游戏设置:1) 蛇的颜色(红色)2) 游戏帮助(游戏控制说明)3) 积分(每次吃掉

2、一个食物增加10分,并显示出来)3.3设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。3.4设计总体流程图3.

3、5设计的具体实现1)食物类structFood /*食物的结构体定义*/ intx; /*食物的横坐标*/ inty; /*食物的纵坐标*/ intaddFood; /*判断是否要出现食物的变量*/;2)蛇块类把蛇分成一块一块,一个蛇相当于有若干个块,蛇块类就是用来描述每块的信息。structSnake /*蛇的结构体定义*/intxMAX_JOINTS; /*保存蛇身每一节位于屏幕上的列坐标*/ intyMAX_JOINTS; /*保存蛇身每一节位于屏幕上的行坐标*/ intjoint; /*蛇的节数*/ intdirection; /*蛇移动方向*/ intlife; /*蛇的生命,0活着

4、,1死亡*/3)初始化游戏游戏开始界面的初始化:voidInitGraph() cleardevice(); setbkcolor(BLUE);/*设置背景颜色*/ setcolor(WHITE);/*设置前景颜色*/ setfont(25,0,_T(微软雅黑); outtextxy(170,150,GreedySnake);/*在坐标(170,150)处输出字符串*/ outtextxy(219,254,Ready? getch(); setbkcolor(0); 4)绘制游戏场景setlinestyle(PS_SOLID,5)用于绘制实心的宽度为5个像素的线型,bar(i,40,i+7,4

5、7);为画一个左上角为(i,40),右下角为(i+7,47)的矩形条,rectangle(i,40,i+10,49)也用于画矩形。voidDrawFence() inti; setbkcolor(LIGHTGREEN); setlinestyle(PS_SOLID,5); /画围墙 setfillstyle(LIGHTBLUE); for(i=50;i0;i-) /蛇的每个节往前移动 snake.xi=snake.xi-1; snake.yi=snake.yi-1; /1,2,3,4表示右,左,上,下四个方向,来决定蛇头的移动 switch(snake.direction)caseMV_RIG

6、HT:snake.x0+=10;break; caseMV_LEFT:snake.x0-=10; caseMV_UP:snake.y0-=10; caseMV_DOWN:snake.y0+=10;8)a.从蛇的第四节开始判断是否撞到自己,因为蛇头为两节,第三节不可能拐过来for(i=3;snake.joint;i+) if(snake.xi=snake.x0&snake.yi=snake.y0) GameOver(score); /显示失败 snake.life=1; /蛇死*/ break; b.判断蛇是否撞到墙壁if(snake.x0595|snake.y0455) GameOver(sc

7、ore); /本次游戏结束 snake.life=1; /蛇死c.判断是否撞到障碍物for(intobs_i=0;obs_ivox.size();obs_i+) if(voxobs_i=snake.x0&voyobs_i=snake.y0)GameOver(score);以上三种判断以后,如果蛇死就跳出内循环,重新开始。9)吃到食物后画蛇if(snake.x0=food.x&snake.y0=food.y)/吃到食物后 /把画面上的食物清除setcolor(0); /新的一节先放在看不见的位置,下次循环就取前一节的位置 snake.xsnake.joint=-20;snake.ysnake.j

8、oint=-20; snake.joint+; /蛇的身体长一节 food.addFood=1; /画面上需要出现新食物 score+=10; /- PrScore(score); /输出新得分 /画蛇 setcolor(RED); for(i=0; rectangle(snake.xi,snake.yi,snake.xi+10,snake.yi-10); Sleep(gamespeed); /延时控制蛇的速度 /去除蛇的最后一节 setcolor(0); rectangle(snake.xsnake.joint-1,snake.ysnake.joint-1, snake.xsnake.joi

9、nt-1+10,snake.ysnake.joint-1-10); 10)按键操作key=getch();/接收按键 switch(key)/判断按键,是否往相反方向移动 casew:caseWif(snake.direction!=MV_DOWN)snake.direction=MV_UP;break;dD=MV_LEFT)snake.direction=MV_RIGHT;aA=MV_RIGHT)snake.direction=MV_LEFT;sS=MV_UP)snake.direction=MV_DOWN;pPfun_pause();rRfun_reset(); 编好程序后进行编译、运行,

10、生成可执行文件,就可以玩贪吃蛇游戏了。4.程序测试4.1测试内容与结果1) 开始:程序运行后,会出来蓝色背景界面和提示语Ready?,按任意键开始,注意不要在中文输入法下玩。开始后只有两节的红色蛇和一个绿色的食物,并且蛇是运动的。2) 方向键和WSAD键:蛇开始运行之后,当点击上下左右键(或WSAD)蛇就会按相应的方向运动,蛇不能180度转弯,只能进行90度的转弯。程序检测时蛇确实会按点击方向运动且不会向相反方向运动,所有方向键使用正确。3) 暂停/继续:当程序正在运行时,点击暂停/继续按钮“P”,蛇停在当前的位置,再次点击“P”蛇又从当前位置继续运动。此按钮符合要求,所以暂停/继续按钮使用正

11、确,功能能够实现。4) 重新开始:当游戏结束或想重新开始一局时,点击按钮“R”,游戏又回到最初的状态,一个食物,一个运动着的红色蛇块,且游戏积分清零。所以重新开始功能能够实现。5) 界面右侧能够出现按键提示和分数显示等有关信息。4.2程序运行效果图5.课程设计总结在设计这个程序中我主要学会了如何运用以下有关C语言和C+的知识:1)函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增加了程序的可读性。2)分析函数先从main()函数入手。Main()函数是C+源程序编译时的开始,从main()函数开始读函数可将其他函数

12、的功能理解得更透彻。3)在做程序的时候先列框架,将这个程序所要达到的目的(功能)分析出来,选择正确的数据结构然后在将程序模块化,按照模块编写函数更加简单合理。4)我还了解了很多的库函数的作用,如字符串函数中有很多对字符串进行处理的函数,其功能我都有所了解。5)学会了有关头文件的使用方法,及系统调配问题的解决方法等。6)了解到了注释的重要性。通过这次试验,让我学到很多这个学期没有接触过的很多知识,完成一个贪吃蛇的项目;第一步就是先理清思路,设计主界面,主界面是以一块封闭的画布,并在画布内设计蛇体和食物。蛇头如果碰到墙或者与蛇身的某一部分碰到就会死亡;如果蛇头碰到食物,就会自动增加一节蛇身,并更改

13、得分。想要写出好的程序,还是要有扎实的基础,这样遇到问题就不会一筹莫展来。在编程时我们要有想象力,不要拘泥于现有的贪吃蛇游戏,而是要把自己想到的再加上所学的知识,遇到问题不能怕,而是要专心找出问题的原因,再回来看看书本的知识,不懂的还可以问问老师。编程过程还要养成良好的编程习惯,这样不仅自己能够很好看懂自己的代码,也让人家容易看懂自己的代码,而不至于代码知识自己会看,出来问题只有自己会解决而其他人都不会解决;遇到问题时要考虑最简单的解决方案,只有简单的方案不能满足要求时再考虑复杂的方案。最主要编程还是要多与人沟通,不会的不能立即问别人,但是一段时间后解决不了时还是应该向别人请教请教,“三人行必

14、有我师”正是这个意思。通过这次实验,我深刻地体会到了面向对象与面向过程的区别。程序在最初设计时由于面向对象的思想不够成熟,导致在最后想要增加一些新的功能时,出现了一些麻烦。总之,我们还需要进一步提升自己的能力。6.参考文献C语言程序设计武雅丽清华大学出版社C+面向对象程序设计谭浩强清华大学出版社C语言课程设计案例精编李丽娟中国水利水电出版社附录:源程序/程序名称:贪吃蛇/制作:莫新存/编译环境:VisualC+6.0,EasyX/#includegraphics.hstdlib.hconio.hdos.htime.hstdio.hvector#definerandom(a,b)(rand()%

15、(b)-(a)+(a)#pragmacomment(lib,Winmm.lib)/加入背景音乐时使用usingnamespacestd;#defineMAX_JOINTS 200#defineMV_RIGHT1#defineMV_LEFT2#defineMV_UP3#defineMV_DOWN4intrnd1,rnd2;vectorvox;voy;voidInitGraph(void); /*图形界面初始化函数*/voidDrawFence(void); /*绘制游戏场景*/voidGameOver(intscore); /*结束游戏*/voidGamePlay(void); /*玩游戏具体过

16、程*/voidPrScore(intscore);/*显示分数*/voidfun_pause();/*暂停游戏*/voidfun_reset();/*重置游戏*/voidfun_obstacle();/*设置障碍物*/structFood /*食物的结构体定义*/structSnake /*蛇的结构体定义*/ intxMAX_JOINTS;voidplay() initgraph(800,600); InitGraph(); DrawFence(); GamePlay();intmain()mciSendString(playmo.mp3/播放音乐 play(); return0;/初始化vo

17、idInitGraph() /绘制游戏场景/结束游戏voidGameOver(intscore)/输出成绩voidPrScore(intscore) charstr_score10; /setfillstyle(YELLOW); /bar(50,15,220,35); /setcolor(6); /setfont(25,0,_T( /setfillstyle(BLACK); setbkmode(TRANSPARENT); /-new- BeginBatchDraw(); setfillstyle(BLACK); bar(601,0,800,600); setfont(60,0,_T( setc

18、olor(YELLOW); outtextxy(625,30,_T(贪吃蛇 setfont(30,0,_T( setcolor(LIGHTGREEN); outtextxy(625,140,_T(制作:莫新存 outtextxy(625,200,_T(学号:19 setcolor(CYAN); outtextxy(625,380,_T(上:W outtextxy(625,400,_T(下:S outtextxy(625,420,_T(左:A outtextxy(625,440,_T(右:D outtextxy(625,460,_T(分数: outtextxy(625,490,_T(暂停(P键) outtextxy

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1