资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
淮南师范学院电气信息工程学院2013届通信工程专业课程设计报告 成绩课程设计报告题 目: C语言编程实现贪食蛇游戏 学生姓名: 赵伟 学生学号: 0908040246 系 别: 电气信息工程学院 专 业: 通信工程 届 别: 2013届 指导教师: 王丽 电气信息工程学院制2012年5月C语言编程实现贪食蛇游戏学生:赵伟指导教师:王丽电气信息工程学院1 课程设计的任务与要求1.1 课程设计的任务通过对C语言编写程序实现贪食蛇游戏系统。掌握结构化,模块化程序设计的思想,培养C语言编程编写实战能力。1.2 课程设计的要求先在程序中设计好数组元素与蛇,食物的对应关系;产生一个固定大小有边界的游戏区域,蛇从区域中随机一点出发,运动限制在游戏区域内;蛇的运动方向为直线运动,只走横和竖的方向,不走斜线;食物出现按随即分布原则,蛇吃掉一份后随即在游戏区域内出现一份新的食物;蛇的运动速度由得分来控制,得分越高,速度越快;得分按蛇每吃掉一个食物得10分计算;蛇的身体长度从3开始,每吃掉一个事物增加一个长度;游戏结束条件为:在控制过程中蛇头撞到墙壁或者与蛇身相撞。1.3 课程设计的研究基础课程设计基础为C语言程序的设计与编写。C语言是在国内外广泛使用的一种计算机语言,它具有高级语言的特点,有具有汇编语言的特点。C语言功能丰富、表达力强、使用灵活方便、应用面广、目标程序高、可移植性好,既具有高级语言的优点,有具有低级语言的许多特点,因此特别适合于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发,著名的UNIX操作系统就是用C语言编写的1。语言是由玫瑰贝尔研究所的D.Mritchie于1972年推出,1978年后,C语言已经先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序2。我们利用电脑或者游戏机玩的游戏都可以利用C语言来进行编写,大部分也都是用C进行编写的,其中2D的贪食蛇游戏是利用编写的经典案例3。2 贪食蛇系统方案制定2.1 方案的提出方案一:利用C语言编程实现贪食蛇游戏流程图如下图1 C语言编写贪食蛇流程图方案二:利用JAVA语言编程实现贪食蛇游戏45流程图如下 . 图2 利用Java编写贪食蛇流程图2.2 方案比较通过流程图可以看出,方案一与方案二的区别在于游戏可否中途退出和暂停,这一模块牵扯到很多的内容。2.3 方案的论证利用Java设计比较复杂,它涉及面广,牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新,数据的收集与更新。而且在这个游戏的开发中,还要应用到类的继承机制以及一些设计模式。在设计开发过程中,需要处理好各个类之间的继承关系。还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系6。而利用C语言则比较方便,并且我们对C语言的熟悉度比较高,所以,我们选择了利用C来开发这个游戏。2.4 方案的选择通过比较,得出利用JAVA实习目标较复杂。且相比较而言。我们更熟悉C编程,从而选择方案一,利用C语言来实现设计的目标。3 系统方案设计3.1各单元模块的划分与功能介绍本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功能模块;接着,按需求分析中的功能需求设计第一层模块,有图形驱动,画主界面,游戏过程,结束处理,退出等第6个主要功能;接着,画出第二层模块78。总体模块结构如图图3 总体模块结构图 3.2总体数据结构设计 设计思路:测序的关键在于表示蛇的图形及蛇的移动。用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从身体新位置开始画出蛇。这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失意识画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。下面介绍贪吃蛇游戏程序的主要数据结构。3.3 主要函数的介绍 主控模块main函数主函数是程序的主控模块。首先初始化图形系统,然后使用draw函数播放动画,接着调用init函数9初始化图形系统,之后调用drawk函数9画出游戏开始画面,在调用gameplay函数9,即开始了游戏的具体过程,游戏结束后调用endplay函数9进行游戏结束处理;最后关闭图形系统,结束程序。主控模块的流程图如下图所示。其中带有两个竖线的矩形框表示对自定义函数的调用。 图4 main函数模块 绘制游戏开始界面drawk函数主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的矩形小方块,围成封闭图形表示围墙,在界面的左上部输出游戏程序的版本信息,在右上部输出游戏成绩(score)的表头。3.4 系统整体程序设计贪食蛇游戏具体实现过程gameplay函数,该函数是游戏的核心部分。游戏具体过程gameplay函数的大致算法流程图如下图所示。 图5 gameplay函数流程图 初始化 为防止食物总是出现在一个位置上,要设置随机数发生器的种子数,产生真正的随机数。由于还没有画出食物,并设置需要食物,并设置蛇活着。初始时,蛇只有蛇头和1节蛇尾,设置这2节坐标。设定蛇开始的爬行方向左右。 随机确定食物位置 由于蛇吃到食物的判断是蛇头的坐标和食物的坐标相等,所以要确保食物出现的位置在10的倍数位置上。先用两个带随机函数的表达式产生一个位于围墙内的x、y坐标,然后用两个while循环10将两个坐标值调整到10的倍数上,这样就可以让蛇吃到。 循环确定蛇身的新坐标 这里的难点是表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到第二节,将前一节的坐标值赋给后一节的坐标,移动后只要把最后一节用背景色擦出即可,因为新位置0到n-1节还是要出现在画面上的。这里用一个for循环来确定蛇身的新坐标。 吃到食物后的处理 蛇吃到食物后,首先将食物擦除,即用背景色画出该食物,然后给蛇的节数加1,设置需要食物标志,是游戏成绩加10分,如果成绩达到100分的倍数,则给关数加1,并加快游戏速度。 有按键判断蛇的方向 这是一个内嵌的嵌套的条件选择结构,根据按动上下左右键来设定蛇的移动方向。判断还需考虑相反的方向键无效,比如蛇正在向上爬行,按下一键方向是无效的。4系统仿真与调试4.1 仿真软件介绍Win-TC软件是一款用于编写C语言程序的软件,是TC2 WINDOWS平台开发的一个工具,是Turbo C 2.0(简称TC2.0)的一种扩展形式,是在TC2.0的基础上,增强了系统的兼容性和共享性,允许进行复制粘贴的多项可以用鼠标来操作的功能,比TC2.0使用起来方便。该软件使用TC2为内核,提供WINDOWS平台的开发界面,因此也就支持WINDOWS平台下的功能,例如剪切、复制、粘贴和查找替换等。而且在功能上也有它的独特特色例如语法加亮、C内嵌汇编、自定义扩展库的支持等。它的主要特点如下:1)在WINDOWS下编辑TC代码,可以充分利用WINDOWS的支持剪贴版和中文的特点; 2)Include和Lib路径自动定位,告别TC设置路径的历史; 3)编译错误捕捉功能,编译时不会出现烦人的DOS窗口; 4)支持C内嵌汇编从而实现C/ASM混合编程; 5)支持C扩展库(自定义LIB库); 6)允许自定义设置输入风格,能够实现VC类似的输入风格;7)错误警告定位功能、出现编译错误时双击输出框里的出错行信息可以自动寻找到错误的行,就像DOS的TC那样;4.2系统仿真实现在window环境下装好win-TC之后,打开win-TC并新建文件夹,把贪食蛇游戏的源程序输入进去,然后运行,并发现错误,修改之后,把文件保存在软件的源文件里面,也就是project文件夹里。之后就可以成功运行贪食蛇游戏了。4.3系统测试预期结果:蛇运行时如果撞到墙壁,则游戏结束。实际运效果:与预期结果一致,如下图 图6 贪吃蛇撞到墙壁 图7 游戏结束预期的结果:当蛇得头部与蛇身相撞时,游戏应当结束。实际运效果:与预期结果一致,如下图图8 贪吃蛇头部与身体相撞图9 游戏结束4.4 数据分析经过对各个模块的调试和单元测试并修改了错误后,将各个模块组装成一个系统,并进行集成测试。在集成的过程中发现了一些错误,比如全局变量重复定义、函数重复声明等,分别进行了改正。最后连续运行了5次,以便测试该游戏程序的功能、性能是否达到了预期的目标,并根据所使用的具体机器对蛇的爬行速度进行适当的调整。测试内容包括蛇的运行、分数、关数、动画等功能,情况均正常。5 总结5.1设计小结通过2周的课程设计,在导师的指导和开发小组共同的努力下,终于完成了贪吃蛇游戏程序的设计与编写。该游戏程序实现了用方向键控制蛇在围墙内爬行、随机产生食物、控制蛇吃掉食物并加分、控制游戏中闯关的数目和蛇的运行速度、实时显示得分和关数、结束时处理和显示排行榜等功能。该游戏程序具有界面友好、操作方便、控制准确和容错能力强等特点。然而这个贪吃蛇游戏还存在一些缺陷,应该在如下几个方面加以改进。1) 进入游戏后,到蛇死亡,只能玩一次就会退出程序。应加入多次游戏的控制能力。2) 蛇的美观不足,需将蛇头、蛇尾及蛇身做进一步美化,使其更像真实的蛇。3) 当分数超过350分后,蛇的速度变得非常快,一下子就撞到围墙上了,应适当控制蛇的速度和关数,以便使游戏更具有吸引力。5.2 收获体会贪吃蛇的设计与编写对我们有很多帮助,学习编写贪吃蛇的游戏对掌握C语言的知识有很大的帮助。通过编程实践,还能拓展思路,让我们去寻找需要调用那些函数,怎样提高程序的质量等。要写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候就会游刃有余了。在编程时我们要有丰富的想象力,不要拘泥与固定的思维方式,遇到问题的时侯要多想几种解决问题的方案。丰富的想象力是建立在丰富的知识基础上,所以我们要通过多个途径来帮助自己建立较丰富的知识结构。贪吃蛇游戏的编程练习思考数据结构:定义食物的坐标来控制它出现的位置,用一系列的函数时进行表示,比如用函数rectangle来画出矩形,用life变量的值表示蛇的生命,用direction变量的
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号