logo资料库

C语言课程设计报告 贪吃蛇源程序.doc

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
课 程 设 计 (小游戏贪吃蛇的程序设计报告) 设计人:刘兵飞 班级:计 11-1 学号:21 号 2011 年 12 月 28 号
目 录 一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献
一. 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以 C 语 言技术为基础,使用 Turbo C++3.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 具体完成的设计内容 在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明 等(50 行),主控模块(MAIN 函数,14 行),动画,音乐播放模块(DRAWSNOW 函数, 33 行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。开发中工作量约 为 215 行源代码。 二 .需求分析 贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学 习或工作当中。虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市 场还是相当大的,因为它玩法简单易行,不论是手机,还是小游戏机,都能很顺利的运行。 对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游戏刚 好迎合了他们的需求。 2.1 功能的需求 要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功能。对贪吃蛇游戏程序的功能 需求可描述如下: 程序运行后显示动画,音乐,按 ESC 键退出游戏界面后,左边有一个矩形区,外游戏 区域,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域。 蛇在封闭围墙利用绿色矩形表示,围墙里随机的出现一个食物,通过按键盘四个光标键 控制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着 又出现食物,等待蛇来吃。食物用一个点表示,并且每次食物的位置都是随机出现的。游戏 中要使贪吃蛇尽可能的长,但是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体不能撞到一起, 否则游戏结束。游戏中每吃掉一个食物要有积分,随着分数的增加可进入下一关,即使速度 会加快。游戏结束时,如果分数进入前 5 名则重新排榜并存储。显示排行榜。由于有关贪吃 蛇和食物的数据较多,而且关系密切,贪吃蛇及食物都是定义结构体数据类型,这样定义便 于操作与处理。 2.2 操作方法 2.2.1.进入游戏 2.2.2.游戏界面 2.2.3.游戏操作 2.2.4.游戏结束 三 总体设计 确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序的主要函数及之间的调用关 系,同时设计蛇与游戏者等的数据结构。 3.1 模块划分
本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐 层分解。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功 能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形驱动,画主界 面,游戏过程,结束处理,退出等第 6 个主要功能;接着,画出第二层模块。总体模块结构 如图 6-1 所示。 主 控 模 板 动 画 音 乐 图 形 驱 动 画 主 界 面 游 戏 过 程 读 取 记 录 结 束 处 理 退 出 成 绩 排 序 写 入 文 件 排 行 榜 3.1.1. 主控模块。 3.1.2. 动画音乐模块 3.1.3. 画主界面模块 3.1.4. 游戏过程模块 3.1.5. 游戏结束处理模块 3.1.6. 读取记录模块 3.1.7. 成绩排序模块 3.1.8. 写入文件模块 3.1.9. 排行榜模块 3.1.10. 退出 3.2 总体数据结构设计 设计思路:测序的关键在于表示蛇的图形及蛇的移动。用一个小局限性方块表示蛇的一 节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须 从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移 动,图形的实现是从身体新位置开始画出蛇。这时,由于未清屏的原因,原来的蛇的位置和 新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物 的出现与消失意识画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。下 面介绍贪吃蛇游戏程序的主要数据结构。 3.2.1 食物与蛇的数据结构 表示食物与蛇的矩形块设计为 10*10 个像素单位,食物的基本数据域为它所出现的位 置,用 X 和 Y 坐标表示,则矩形块用函数 RECTANGLE(X,Y,X+10,Y+10)或 RECTANGLE
(X,Y,X+10,Y-10)可以画出。由于每次只出现一个食物,所以设定 YES 表示是否需要出 现食物。YES=1 表示没有食物或食物已经被蛇吃掉,需要画出食物。放置食物后,置 YES=0。 蛇的一节身体为一个矩形块,表示矩形块只需左上角点坐标(X,Y)。由于在游戏过程中蛇 的身体不断增长,需用数组存放每节坐标,最大设定为 N=200,NODE 表示当前节数。 DIRECTION 是保存蛇的移动方向的变量,其值可为 1、2、3、4 之一,分别表示右、左、 上、下的方向。LIFE 是表示生命的变量,LIFE=0 表示蛇活着,一旦 LIFE=1,一旦 LIFE=1, 表示蛇死,结束游戏。 #define Struct { 200 N Food x; y; yes; int int Int Snake x[N]; y[N]; node; derection; life; }food; Struct int { Int Int Int Int }snake; 3.2.2 排行榜中优胜者的数据结构 排行榜主要记录优胜者的姓名和成绩。为了存放排行榜信息,可定义如下的结构体类型, 其中字符数组 name 成员存放优胜者的姓名,整型变量 score 成员存放优胜者的成绩。 Struct person { char Int name[20]; score; }; 3.2.3 其他全局变量的定义 Struct Int Int per[5]; person score=0; gamespeed=400; 3.2.4 符号常量的宏定义 #define #define #define 0x4b00; LEFT RIGHT 0x4d00; DOWN 0x5000;
#define #define #define 0x4800 0x011b UP ESC FILENAME 四. 详细设计 根据总体设计的模块功能和结构,完成所承担的程序模块的算法设计。给出每个模块的 详细的算法,算法分别用传统流程图和文字说明来描述。 4.1 主控模块 main 函数 主函数是程序的主控模块。首先初始化图形系统,然后使用 drawsnow 函数播放动画和 声音,接着调用 init 函数初始化图形系统,之后调用 drawk 函数画出游戏开始画面,在调用 gameplay 函数,即开始了游戏的具体过程,游戏结束后调用 endplay 函数进行游戏结束处理; 从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,结束程序。主控模块 的流程图如图 6-2 所示。其中带有两个竖线的矩形框表示对自定义函数的调用。 余下流程图在下页 开始 初始化图形系统 播放动画音乐 初始化图形系统 画游戏开始界面 游戏具体过程 游戏结束处理 关闭图形系统 结束 4.2 绘制游戏开始界面 drawk 函数 绘制游戏界面的函数的算法流程图如图 6-3 所示。 主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽
度和高的均为 10 个像素单位的距行小方块,围成封闭图形表示围墙,为了醒目,设置为淡 青色,用函数 setlinestyle 设直线型宽度为 3 个像素,设置 3 个像素的围墙线,。最后,在界 面的左上部输出游戏程序的版本信息,在右上部输出游戏成绩(score)和关(level)的表头。 4.3 游戏具体过程 gameplay 函数 该函数是游戏的核心部分。游戏具体过程 gameplay 函数的大致算法流程图如图 6-4 所 示。 下面对该算法不够详细的地方作进一步的描述。 开 始 初始化 未按键 为食物 随即确定食物 质优食物标志 有食物 画食物 输出成绩和关数 输出蛇位置 确定蛇头位置
分享到:
收藏