C语言专业课程设计方案报告贪吃蛇源程序.doc
《C语言专业课程设计方案报告贪吃蛇源程序.doc》由会员分享,可在线阅读,更多相关《C语言专业课程设计方案报告贪吃蛇源程序.doc(32页珍藏版)》请在咨信网上搜索。
1、C 语 言 课 程 设 计 (小游戏贪吃蛇程序设计汇报) 设计人: 班级: 201 年 月 号 目 录一:概述1:研究背景及意义2:设计任务和需要知识点 3:具体完成设计内容二:需求分析1:功效需求 2:操作方法 三:总体设计1:模块划分 2:数据结构设计 四:具体设计1:主空摸块设计 2:绘制游戏界面 3:游戏具体过程 4:游戏结束处理 5:显示排行榜信息模块 五:程序调试和测试1:动画和音乐同时 2:蛇运行 3:终止程序 六:结论 七:结束语 八:程序清单 九:参考文件 一 概述 本课程设计以软件工程方法为指导,采取了结构化,模块化程序设计方法,以C语言技术为基础,使用Turbo C+3.
2、0为关键开发工具,对贪吃蛇游戏进行了需求分析,总体设计,具体设计,最终完成系统实现和测试。1.1 研究背景及意义 伴随社会发展,大家生活节奏日益加紧,越来越多人加入了全球化世界。大家不再拘泥和一小块天地,加班,出差成了现代人不可避免公务。而此时一款能够随时随地娱乐游戏成为了大家需要。此次课程设计完成贪吃蛇小游戏,正是为了满足上述需求而设计出来。贪吃蛇游戏虽小,却设计很多知识点。经过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程和那个发,技术和工具开发软件过程,深入掌握结构化,模块化程序设计方法和步骤,深入掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,
3、文件等数据结构使用方法,掌握图形,声音,随机数等多个库函数使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,深入学会软件调试,测试,组装等软件测试方法,为后续课程学习和未来实际软件开发打下坚实基础。1.2 设计任务和需要知识点1.2.1 课程设计关键完成任务1) . 经过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计思想,培养处理实际问题能力。2) 有同时播放动画,声音效果。3) 设计好数组元素和蛇,食物对应关系。4) 随机产生食物。5) 有分数统计,排行榜,分数存放等功效。 经过此次课程设计,期望使读者能更深入了解和掌握课程教学中基础概念,培养读者应用基础技术处理实际问题能力,
4、从而深入提升分析问题和处理问题能力。1.2.2需要掌握和利用知识点 1.2.3此次课程设计需要掌握和利用以下知识点: 1) 数组应用。 2) 全局变量使用。 3) 按键处理。 4)结构体应用。 5)图形,音乐和动画相关知识。 6)随即函数使用。 7)文件基础出操作。 8) 结构化,模块化设计方法。 1.3具体完成设计内容 在此次课程设计中需要完成任务有:包含命令,全局变量定义和宏定义,函数申明等(50行),主控模块(MAIN函数,14行),动画,音乐播放模块(DRAWSNOW函数,33行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。开发中工作量约为215行源代码。二 .需求分析
5、 贪吃蛇游戏是个简单小游戏,能让游戏者身心得到娱乐,从而能够愈加好地投入到学习或工作当中。即使现在市面上出来这多种多样游戏版本,可是贪吃蛇这类小游戏其市场还是相当大,因为它玩法简单易行,不管是手机,还是小游戏机,全部能很顺利运行。对于在外忙碌人,不可能花费大量时间在娱乐上,大型游戏是行不通,这么小游戏刚好迎合了她们需求。2.1功效需求 要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功效。对贪吃蛇游戏程序功效需求可描述以下: 程序运行后显示动画,音乐,按ESC键退出游戏界面后,左边有一个矩形区,外游戏区域,在矩形区中有食物和贪食蛇,上方有统计分数及关数显示区域。 蛇在封闭围墙利用绿色矩形表示,
6、围墙里随机出现一个食物,经过按键盘四个光标键控制蛇向上,下,左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,接着又出现食物,等候蛇来吃。食物用一个点表示,而且每次食物位置全部是随机出现。游戏中要使贪吃蛇尽可能长,不过不能使贪吃蛇撞到四面墙壁,而且蛇身体不能撞到一起,不然游戏结束。游戏中每吃掉一个食物要有积分,伴随分数增加可进入下一关,即使速度会加紧。游戏结束时,假如分数进入前5名则重新排榜并存放。显示排行榜。因为相关贪吃蛇和食物数据较多,而且关系亲密,贪吃蛇及食物全部是定义结构体数据类型,这么定义便于操作和处理。2.2 操作方法 2.2.1.进入游戏 2.2.2.游戏界面 2.2.
7、3.游戏操作 2.2.4.游戏结束三 总体设计 确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序关键函数及之间调用关系,同时设计蛇和游戏者等数据结构。3.1 模块划分本程序采取结构化程序设计方法,根据自顶向下,逐步细化方法对要处理问题进行逐层分解。首先画出顶层模块,即主控模块,之完成对下层模块调用功效,即调用其它功效模块;接着,按需求分析中功效需求设计第一层模块,有音乐动画,图形驱动,画主界面,游戏过程,结束处理,退出等第6个关键功效;接着,画出第二层模块。总体模块结构图6-1所表示。 主 控 模 板退出结束处理游戏过程画主界面 图形驱动动画音乐排行榜写入文件成绩排序读取统计3.1.1.
8、主控模块。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 总体数据结构设计 设计思绪:测序关键在于表示蛇图形及蛇移动。用一个小不足方块表示蛇一节身体,身体每长一节,增加一个矩形块,蛇头业用一样一节小矩形方块表示移动时必需从蛇能够上向前爬行,档案下有效方向键后,应先确定蛇头位置,以后蛇身体虽蛇头移动,图形实现是从身体新位置开始画出蛇。这时,因为未清屏原因,原来蛇位置和新蛇位置差一节蛇身,即看起来蛇多一节身体,
9、所以将蛇最终一节用背景色覆盖。食物出现和消失意识画矩形块和覆盖矩形块。为了便于了解,定义两个结构体:食物和蛇。下面介绍贪吃蛇游戏程序关键数据结构。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)。因为
10、在游戏过程中蛇身体不停增加,需用数组存放每节坐标,最大设定为N=200,NODE表示目前节数。DIRECTION是保留蛇移动方向变量,其值可为1、2、3、4之一,分别表示右、左、上、下方向。LIFE是表示生命变量,LIFE=0表示蛇活着,一旦LIFE=1,一旦LIFE=1,表示蛇死,结束游戏。#define N 200Struct Food int x; int y; Int yes;food;Struct Snake int xN;Int yN;Int node;Int derection;Int life;snake;3.2.2 排行榜中优胜者数据结构排行榜关键统计优胜者姓名和成绩。为了存
11、放排行榜信息,可定义以下结构体类型,其中字符数组name组员存放优胜者姓名,整型变量score组员存放优胜者成绩。Struct person char name20; Int score;3.2.3 其它全局变量定义Struct person per5;Int score=0;Int gamespeed=400;3.2.4 符号常量宏定义#define LEFT 0x4b00;#define RIGHT 0x4d00;#define DOWN 0x5000;#define UP 0x4800#define ESC 0x011b#define FILENAME四. 具体设计 依据总体设计模块功效
12、和结构,完成所负担程序模块算法设计。给出每个模块具体算法,算法分别用传统步骤图和文字说明来描述。4.1 主控模块main函数主函数是程序主控模块。首先初始化图形系统,然后使用drawsnow函数播放动画和声音,接着调用init函数初始化图形系统,以后调用drawk函数画出游戏开始画面,在调用gameplay函数,即开始了游戏具体过程,游戏结束后调用endplay函数进行游戏结束处理;从文件中读取统计信息,排序,显示排行榜信息,最终关闭图形系统,结束程序。主控模块步骤图图6-2所表示。其中带有两个竖线矩形框表示对自定义函数调用。开始 初始化图形系统 播放动画音乐 余下步骤图在下页 初始化图形系统
13、 画游戏开始界面 游戏具体过程 游戏结束处理 关闭图形系统结束4.2 绘制游戏开始界面drawk函数 绘制游戏界面函数算法步骤图图6-3所表示。 主界面就是一个封闭围墙,用两个循环语句分别在水平方向和垂直方向输出连续宽度和高均为10个像素单位距行小方块,围成封闭图形表示围墙,为了醒目,设置为淡青色,用函数setlinestyle设直线型宽度为3个像素,设置3个像素围墙线,。最终,在界面左上部输出游戏程序版本信息,在右上部输出游戏成绩(score)和关(level)表头。4.3 游戏具体过程gameplay函数 该函数是游戏关键部分。游戏具体过程gameplay函数大致算法步骤图图6-4所表示。
14、下面对该算法不够具体地方作深入描述。开 始 初始化未按键为食物质优食物标志随即确定食物有食物画食物输出成绩和关数输出蛇位置确定蛇头位置窗蛇身,蛇死 蛇撞墙置蛇死标志蛇死吃到物吃后处理循环画蛇延迟10秒除蛇尾,增节蛇死接收按键 keykey=ESC结 束由按键判蛇位置4.3.1 初始化 为预防食物总是出现在一个位置上,要设置随机数发生器种子数,产生真正随机数。因为还没有画出食物,并设置需要食物,并设置蛇活着。初始时,蛇只有蛇头和1节蛇尾,设置这2节坐标。设定蛇开始爬行方向左右。4.3.2 随机确定食物位置 因为蛇吃到食物判定是蛇头坐标和食物坐标相等,所以要确保食物出现位置在10倍数位置上。先用两
15、个带随机函数表示式产生一个在围墙内x、y坐标,然后用两个while循环将两个坐标值调整到10倍数上,这么就能够让蛇吃到。4.3.3 循环确定蛇身新坐标 这里难点是表示蛇新位置并消除前一次图形。采取方法是每次移动时候从最终一节开始到第二节,将前一节坐标值赋给后一节坐标,移动后只要把最终一节用背景色擦出即可,因为新位置0到n-1节还是要出现在画面上。这里用一个for循环来确定蛇身新坐标。4.3.4 吃到食物后处理 蛇吃到食物后,首先将食物擦除,即用背景色画出该食物,然后给蛇节数加1,设置需要食物标志,是游戏成绩加10分,假如成绩达成50分倍数,则给关数加1,并加紧游戏速度。4.3.5 有按键判定蛇
16、方向 这是一个内嵌嵌套条件选择结构,依据安东上下左右键来设定蛇移动方向。其中1=向右,2=向左,3=向上,4=向下。判定是还考虑相反方向键无效,比如蛇正在向上爬行,按下一键方向是无效。4.4 游戏结束处理木块ENDPLAY函数游戏结束时,应该用ENDPLAY函数进行游戏结束处理,其算法步骤图图6-5所表示。开 始 读排行榜统计文件scoreper4.score 画出填充矩形界面输出提醒信息输出空格建立输入框余下步骤图在下页 输出不够上排行榜信息输入游戏者姓名成绩赋值统计按成绩排序统计写入排行榜文件显示排行榜返回该块首先调用读取排行榜文件统计,假如文件不2存在,则在READFILES函数中调用I
17、NITSCOREFILES函数建立该文件,然后再读出统计。 其次,判定游戏者成绩是否能够上排行榜。假如能够上榜,则画出淡蓝色矩形界面,在界面中输入游戏者姓名,对成绩进行赋值,然后调用 CompareScore 函数对统计排序,并调用 Writefiles 函数将统计写入排行榜帮文件;假如不能上榜,则直接在游戏界面输出不能上榜信息。 最终,调用 pain_board 函数显示排行榜信息。4.5函数void pain_board完成排行榜绘制.五. 程序调试和测试 调试和测试软件目标就是发觉并更正潜伏错误。一个程序,必需经过认真调试和测试,才能尽可能降低错误、确保程序满足功效、性能需求,达成最初设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 专业课程 设计方案 报告 贪吃 源程序
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。