四川机电职业技术学院。
课程设计。12 级计算机网络专业。
系部: 信息工程系
题目: 贪食蛇程序设计报告。
姓名: 徐定双
指导教师: 王勋卿王雯宏
日期: 2013/1/6
目录。一:概述3
1:研究背景及意义3
2:设计的任务与需要知识点3
3:具体完成设计内容4
二:需求分析5
1:功能需求5
2:操作方法5
三:总体设计5
1:模块划分5
2:数据结构设计6
四:详细设计6
1:主板摸块设计6
2:绘制游戏界面7
3:游戏的具体过程8
五:程序的调试与测试9
1:蛇的运行9
2:终止程序10
六:结论10
七:结束语10
八:程序清单11-16
一. 概述。
本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以c语言技术为基础,使用visual c++6.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。
1.1 研究的背景及意义。
随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。
此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。
1.2 设计的任务和需要的知识点。
1.2.1 课程设计主要完成的任务。
1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。
2) 有同步**动画。
3) 设计好数组元素与蛇,食物的对应关系。
4) 随机产生食物。
5) 有分数统计。
通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。
1.2.2需要掌握和运用的知识点。
1.2.3本次课程设计需要掌握和运用如下的知识点:
1) 数组的应用。
2) 全局变量的使用。
3) 按键处理。
4)结构体的应用。
5)图形,动画的有关知识。
6)随即函数的使用。
7)文件的基本出操作;
8) 结构化,模块化的设计方法。
1.3具体完成的设计内容。
在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明等(79行),主控模块(main函数,11行),动画70行),操作模块(90行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。开发中工作量约为250行源**。
二 .需求分析。
贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学习或工作当中。虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市场还是相当大的,因为它玩法简单易行,不论是手机,还是小游戏机,都能很顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游戏刚好迎合了他们的需求。
2.1功能的需求。
要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功能。对贪吃蛇游戏程序的功能需求可描述如下:
程序运行后显示动画,按esc键退出游戏界面后,左边有一个矩形区,外游戏区域,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域。
蛇在封闭围墙利用‘*’表示,围墙里随机的出现一个食物,通过按键盘四个光标键控制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着又出现食物,等待蛇来吃。食物用一个点表示,并且每次食物的位置都是随机出现的。游戏中要使贪吃蛇尽可能的长,但是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体不能撞到一起,否则游戏结束。
游戏中每吃掉一个食物要有积分,随着分数的增加可进入下一关,即使速度会加快。游戏结束时,由于有关贪吃蛇和食物的数据较多,而且关系密切,贪吃蛇及食物都是定义结构体数据类型,这样定义便于操作与处理。
2.2 操作方法。
2.2.1.进入游戏。
2.2.2.游戏界面。
2.2.3.游戏操作。
2.2.4.游戏结束。
三总体设计。
确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序的主要函数及之间的调用关系,同时设计蛇与游戏者等的数据结构。
3.1 模块划分。
本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功能模块;接着,按需求分析中的功能需求设计第一层模块,有动画,图形驱动,画主界面,游戏过程,结束处理,退出等第5个主要功能;接着,画出模块。总体模块结构如图6-1所示。
3.1.1. 主控模块。
3.1.3. 画主界面模块。
3.1.4. 游戏过程模块。
3.1.5. 游戏结束处理模块。
3.1.6. 读取记录模块。
3.1.8. 写入文件模块
3.1.10. 退出。
3.2 总体数据结构设计。
设计思路:测序的关键在于表示蛇的图形及蛇的移动。用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从身体新位置开始画出蛇。
这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失意识画覆盖‘*’为了便于理解,定义两个结构体:食物与蛇。
下面介绍贪吃蛇游戏程序的主要数据结构。
3.2.1 食物与蛇的数据结构。
表示食物与蛇的‘*’设计为23*50个像素单位,食物的基本数据域为它所出现的位置,用x和y坐标表示,则‘*’用函数linklist p;p = gotoxy(p->x,p->y);if(i)//蛇头以画出。由于每次只出现一个食物,所以设定yes表示是否需要出现食物。yes=1表示没有食物或食物已经被蛇吃掉,需要画出食物。
放置食物后,置yes=0。蛇的一节身体为一个‘*’表示‘*’只需左上角点坐标(x,y)。由于在游戏过程中蛇的身体不断增长,需用数组存放每节坐标,最大设定为n=200,node表示当前节数。
direction是保存蛇的移动方向的变量,其值可为之一,分别表示右、左、上、下的方向。life是表示生命的变量,life=0表示蛇活着,一旦life=1,一旦life=1,表示蛇死,结束游戏。p = next;
while( !p)else
if( =p){
//碰到边界。
if(>x >=1 &&y >=1 &&x < max__x &&y < max__y){
return 1;
3.2.3 其他全局变量的定义。
3.2.4 drow_snake(0);/画蛇头。
speed = 2.3 * 157;
sleep(speed);/程序暂停speed个单位毫秒。
3.2.4 符号常量的宏定义。
if(c ==w' |c ==a' |c ==s' |c ==d'){
if((temp ==w' &c ==s') temp ==s' &c ==w') temp ==d' &c ==a') temp ==a' &c ==d'))不允许连续的两次内按相反的键。
四。 详细设计。
根据总体设计的模块功能和结构,完成所承担的程序模块的算法设计。给出每个模块的详细的算法,算法分别用传统流程图和文字说明来描述。
4.1 主控模块main函数。
主函数是程序的主控模块。首先初始化图形系统,然后使用drawsnow函数**动画和声音,接着调用init函数初始化图形系统,之后调用drawk函数画出游戏开始画面,在调用gameplay函数,即开始了游戏的具体过程,游戏结束后调用endplay函数进行游戏结束处理;从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,结束程序。主控模块的流程图如图6-2所示。
其中带有两个竖线的矩形框表示对自定义函数的调用。
c语言课程设计报告 课程设计报告
周口师范学院。课程设计报告。院 系 计算机科学与技术学院 班级。学生姓名学号。设计题目 职工工资管理系统。完成日期 年月日 课程设计任务书。设计题目 工资管理系统 教研室主任指导教师 年月日。摘要11设计内容 任务及具体要求2 1.1设计内容2 1.2设计任务及具体要求2 2概要设计3 2.1该系统...
C语言课程设计报告
华中科技大学计算机科学与技术学院。题目 专业 班级 学号 姓名 成绩 指导教师 完成日期 2016年月日。目录。一 系统需求分析 1 二 总体设计 2 三 数据结构设计 3 四 详细设计 4 五 系统实现 5 六 运行测试与结果分析 6 七 总结 7 八 参考文献 8 九 指导教师评语 9 对所要解...
C语言课程设计报告
c语言。课程设计。商业销售管理系统。学号 121407210 姓名 宋军。班级 软件1202 指导老师 邹姝稚。成绩 2013年6月。一 任务描述。编写一个商品销售管理系统,是其能够拥有商品买卖和库存管理功能。在顾客选购时,需给出输入商品名称,或商品型号,或选择列表进而输入商品编号三种选择,在顾客选...