贪吃蛇课程设计报告2.doc

上传人:枫** 文档编号:549259579 上传时间:2023-01-03 格式:DOC 页数:17 大小:211.50KB
返回 下载 相关 举报
贪吃蛇课程设计报告2.doc_第1页
第1页 / 共17页
贪吃蛇课程设计报告2.doc_第2页
第2页 / 共17页
贪吃蛇课程设计报告2.doc_第3页
第3页 / 共17页
贪吃蛇课程设计报告2.doc_第4页
第4页 / 共17页
贪吃蛇课程设计报告2.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《贪吃蛇课程设计报告2.doc》由会员分享,可在线阅读,更多相关《贪吃蛇课程设计报告2.doc(17页珍藏版)》请在金锄头文库上搜索。

1、目录1. 课程设计目的32. 课程设计任务与要求32.1课程设计内容32.2课程设计要求32.3课程设计环境33. 课程设计方案3 3.1方案论证33.2程序整体设计说明33.3设计思路43.4设计总体流程图43.5设计的具体实现54. 程序测试84.1测试内容与结果84.2程序运行效果图95. 课程设计总结106.参考文献11附录 源程序11 1. 课程设计目的:l 复习、巩固才C、C+的基础知识,进一步加深对VC技术的理解和掌握;l 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。l 培养学生在项目开发中团队合

2、作精神、创新意识及能力2. 课程设计任务与要求2.1 课程设计内容贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着很多人,它的制作方法对于很多同学而言都是很神秘的。所以我们希望通过这学期所学知识把它剖析开来,真真正正的了解它的本质和精髓。在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此决定选择这个题目作为VC的课程设计。最后一部分就是游戏的模块划分,根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏设

3、置(蛇的颜色、食物的颜色操作说明等)与积分。2.2课程设计要求l 对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;l 系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;l 说明书、流程图要清楚;l 记录设计情况(备查,也为编写设计说明书作好准备);2.3课程设计环境Windows7操作系统,VC6.0开发环境。3. 课程设计方案3.1方案论证方案一:基于MFC设计该方案的好处是系统自动生成软件框架,设计者只需填充编写的代码即可,程序设计比较复杂,对于编程能力不强的同学来说难度较大。方案二:基于easyX设计该方

4、案的好处是设计者只需编写程序文件,完成后编译即可生成可执行文件,编程前需要先安装easyX图形库。由于编程能力不强,方案二设计简单,易于调试,故选择方案二。3.2程序整体设计说明一个游戏要有开始部分,运行部分,结束部分(实际上开始部分与运行部分是一体的)。游戏界面:1)开始游戏(加载并开始)2)暂停游戏(从当前进度结束)3)重新开始(在某一时刻暂停后可以继续接着玩)游戏设置:1)蛇的颜色(红色)2)游戏帮助(游戏控制说明)3)积分(每次吃掉一个食物增加10分,并显示出来)3.3设计思路这个程序的关键是表示蛇的图形以及蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块。移动时必

5、须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时原来蛇的位置和新蛇的位置差一个单位,所以看起来蛇会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。3.4设计总体流程图是是游戏结束否蛇头是否撞墙或者自身否否随机生成下一个食物根据键盘控制蛇移动方向是蛇开始移动判断是否开始载入游戏并初始化 蛇头和食物坐标是否重合否是否3.5设计的

6、具体实现1) 食物类 struct Food/*食物的结构体定义*/int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int addFood;/*判断是否要出现食物的变量*/;2)蛇块类把蛇分成一块一块,一个蛇相当于有若干个块,蛇块类就是用来描述每块的信息。struct Snake/*蛇的结构体定义*/ int xMAX_JOINTS; /*保存蛇身每一节位于屏幕上的列坐标*/int yMAX_JOINTS; /*保存蛇身每一节位于屏幕上的行坐标*/int joint;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/*蛇的生命,0活着,1死亡*/

7、;3) 初始化游戏 游戏开始界面的初始化: void InitGraph()cleardevice();setbkcolor(BLUE); /*设置背景颜色*/setcolor(WHITE); /*设置前景颜色*/cleardevice();setfont(25, 0, _T(微软雅黑);outtextxy(170,150,Greedy Snake); /*在坐标(170,150)处输出字符串*/outtextxy(219,254,Ready?);getch();setbkcolor(0);cleardevice();4) 绘制游戏场景 setlinestyle(PS_SOLID, 5)用于绘

8、制实心的宽度为5个像素的线型,bar(i,40,i+7,47);为画一个左上角为(i,40),右下角为(i+7,47)的矩形条,rectangle(i, 40, i+10, 49)也用于画矩形。void DrawFence()int i;setbkcolor(LIGHTGREEN);setlinestyle(PS_SOLID, 5);/画围墙setfillstyle(LIGHTBLUE);for (i=50; i=591; i+=10)/rectangle(i, 40, i+10, 49);/上边bar(i,40,i+7,47);bar(i, 551, i+7,558);/下边for (i=4

9、0; i0; i-)/蛇的每个节往前移动 snake.xi = snake.xi-1;snake.yi = snake.yi-1;/1,2,3,4 表示右,左,上,下四个方向,来决定蛇头的移动 switch(snake.direction) case MV_RIGHT: snake.x0 += 10; break;case MV_LEFT: snake.x0 -= 10; break;case MV_UP: snake.y0 -= 10; break;case MV_DOWN: snake.y0 += 10; break;8)a.从蛇的第四节开始判断是否撞到自己,因为蛇头为两节,第三节不可能拐过来 for (i=3; isnake.joint; i+) if (snake.xi=snake.x0 & snake.yi=snake.y0) GameOver(score);/显示失败snake.life = 1; /蛇死*/break; b.判断蛇是否撞到墙壁 if (snake.x0595 | snake.y0455) GameOver(score);/本次游戏结束snake.life = 1; /蛇死 c.判断是否撞到障碍物for(int obs_i = 0; obs_ivox.size(); obs_i+)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 计算机辅助设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号