基于某c语言地贪吃蛇游戏论文设计

上传人:沈*** 文档编号:84227786 上传时间:2022-05-03 格式:DOC 页数:14 大小:62KB
收藏 版权申诉 举报 下载
基于某c语言地贪吃蛇游戏论文设计_第1页
第1页 / 共14页
基于某c语言地贪吃蛇游戏论文设计_第2页
第2页 / 共14页
基于某c语言地贪吃蛇游戏论文设计_第3页
第3页 / 共14页
资源描述:

《基于某c语言地贪吃蛇游戏论文设计》由会员分享,可在线阅读,更多相关《基于某c语言地贪吃蛇游戏论文设计(14页珍藏版)》请在装配图网上搜索。

1、word学校代码 学号分 类 号 密级本科学年论文基于C语言的贪吃蛇游戏学院、系专业名称年 级学生某某指导教师2012年 10 月 10 日基于C语言的贪吃蛇游戏目录摘要:3关键词3引言:3课题要求4课题研究工具:4应用环境42.游戏程序设计5程序功能:5设计思想5设计流程图72.3.2 游戏流程图83.数据结构设计83.1 Food结构体83.2 Snake结构体9游戏中使用的宏常量表104.算法分析10各模块简介115.系统测试136.总结13参考文献:14摘要:近年来,随着通信技术的高速开展,移动网络和移动终端性能的不断提高与完善,以与手机、电脑的高普与率,使得人们对终端系统应用开发的需

2、求在不端增大,贪吃蛇游戏是受广阔人群喜爱的一款游戏,贪吃蛇的设计比拟复杂,在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用 c 语言的图形库函数。本文基于c语言,在Microsoft Visual C+6.0下实现需要用图形驱动文件的支持。游戏所以操作均通过键盘完成,操作简便。关键词:函数 循环 结构体 引言:贪吃蛇是一款非常经典的手机游戏,贪吃蛇的设计比拟复杂,它涉与的面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用C语言的图形库函

3、数。因此,在设计开发过程中,要对C语言的图形库函数有一定的了解,利用图形库函数实现一些功能。 贪吃蛇之所以取这样的名字,其用意还是很明显的,贪吃蛇其实并不贪,它更像是人不断地追求的象征,就像现代的人只有不断努力向前才能得到自己想要的。而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。虽然现在市面上存在各种各样的游戏版本,可是贪吃蛇市场还是依然存在。 因为它的特殊在于吸引人更深入。随着游戏速度不断加快,其刺激也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机。都能很快顺利的运行。对于在外忙碌的人,不可能花费大量的时间在娱乐上,大型游戏是行不通的。这

4、样的小游戏刚好迎合他们的需求。贪吃蛇是家喻户晓的益智类小游戏,选择这个题目是为了将自己的所学知识加以运用,我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力,通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。1收集资料,分析课题,分解问题,形成总体设计思路;2对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进展具体介绍;3上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;4完成课程

5、设计报告。 1.2课题研究工具:本程序采用Microsoft Visual C+6.0的英文版本进展编译。VisualC+6.0是Microsoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C+规X,但仍有相当多的编程人员使用VisualC+6.0进展应用系统的开发。 操作系统 Windows XP Windows Vista Windows7 2.1程序功能:贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方

6、向移动,蛇头撞倒食物,如此食物被吃掉,蛇身体长一节,同时记时,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏完毕。这个程序的关键是表示蛇的图形以与蛇的移动。用一个小矩形表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。移动时必须从蛇头开始,所以蛇不能向相反方向移动,也就是蛇尾不能改作蛇头。如果不按任何键,蛇自行在当前方向上前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有庆平的原因,原来蛇的位置和新蛇的位置

7、差一个单位,所以看起来社会多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现和消失也是画矩形块和覆盖矩形块。食物的出现与消失也是画矩形块和覆盖矩形块。其实我们可以简单模拟一下贪吃蛇的游戏模式:某个世界上突然出现一条蛇,它很短,它的运动神经异常,它没法停止自己的多动症在它的世界里就只有食物,它很饿,也很贪吃;同样在不明原因的情况下,食物从天而降,可惜的是没有落到嘴边;饥饿的主人公,不管它有没有毒,也不问食物的来历,径直向食物爬去;它吃到食物啦,它超出想象的同化能力让食物很快的成为自己身体的一局部,它的身子变长啦。当它吃到第一颗食物时,上帝有给它第二颗,于是它吃了第二颗,于是又变长了,于是又有

8、第三颗它的身子是一直的加长,它不管自己过长身体的麻烦转身不便,继续吃下去,现在它是直接把巴X大,好让食物有个绿色通道。但是在某天的下午,它咬到了自己,它才想起自己是一条毒蛇,于是晕死过去不是毒死;又或者它往食物冲锋的时候,它失去控制,撞到了墙上。为了便于理解,定义两个结构体:食物与蛇。 整个游戏可分为四个步骤:第一步,出现食物;第二步,蛇不停运动;第三步,检查蛇是撞到自己或墙壁;由第四步起游戏有两条支线A、B:第四步A,蛇没有碰到自己或墙壁,蛇继续前进,绘制蛇的动作;第五步,判断蛇是否吃到食物,如果蛇吃到食物,身子变长,原来的食物消失;第六步,让玩家输入控制指令,让蛇在下一轮循环的第二步改变运

9、动方向;第七步,第二轮循环的第一步,重复第一轮的步骤;第四步B,蛇碰到自己或墙壁,终止游戏。开始蛇行进方向为按键方向蛇正常运行游戏初始化界面游戏开始运行按键这选择 是否 蛇吃到食物否碰壁或碰到自己是 蛇死亡玩家完毕游戏2.3.2 游戏流程图游戏开始游戏运行计分游戏完毕游戏中蛇与食物是两个主要的对象,程序中可以采用Food和Snake两个结构体来分别描述食物和蛇。3.1 Food结构体Food结构体用来描述食物描述食物在屏幕上的位置,以与游戏场景中是否需要添加食物的标志信息。结构体成员x和y描述了食物在屏幕上行、列坐标的位置;成员变量addFood标志游戏场景中是否需要添加食物,addFood=

10、0,表示游戏场景中有食物,addFood=1,如此表示食物已经被贪吃蛇吃掉,游戏场景中需要添加食物。Food结构体定义如下:struct Foodint x; /*食物的横坐标*/int y; /*食物的纵坐标*/int addFood; /*屏幕上是否有食物的标志,0:表示有食物,1:明确游戏场景中需要添加食物*/;3.2 Snake结构体Snake结构体描述了游戏中的贪吃蛇,包括贪吃蛇蛇身的节数、蛇身在每一节屏幕上的坐标位置,以与蛇的移动方向和生命状态等信息。结构体成员Joint表示当前贪吃蛇蛇身的节数。常量MAX_JOINT表示游戏所允许的贪吃蛇蛇身的最大节数。结构体中用一个两维数组xM

11、AX_JOINT和yMAX_JOINT保存蛇身每一节位于屏幕上的行、列坐标。结构体成员direction表示蛇当前的移动方向,约定1,2,3,4分别代表右、左、上、下4个方向,对应着程序中的四个宏观量MV_RIGHT、MV_LEFT、MV_UP、MV_DOWM。成员life描述蛇的生命状态,life=0,表示活着,life=1,表示死亡。Snake结构体定义如下:struct Snakeint xMAX_JOINTS; /*保存蛇身每一节位于屏幕上的列坐标*/int yMAX_JOINTS; /*保存蛇身每一节位于屏幕上的列坐标*/int joint; /*蛇的节数*/int directio

12、n; /*蛇的移动方向*/int life; /*蛇的生命,0表示活着,1表示死亡*/; 宏常量 数值 含义MAX_JOINTS200贪吃蛇的最大节数RIGHT0x4d00键盘 按键的键值LEFT0x4b00键盘 按键的键值DOWN0x5000键盘 按键的键值UP0x4800键盘 按键的键值ESC0x011b键盘Esc按键的键值MV_RIGHT1蛇向右方向移动MV_LEFT2蛇向左方向移动MV_UP3蛇向上方向移动MV_DOWM4蛇向下方向移动依据所需要处理的任务要求,规划输入数据和输出结果,决定存放数据的数据结构。语言中数据结构集中表现在数据类型上,因此在进展语言程序设计时,应统筹规划程序中

13、所使用的变量,数组,指针等,以与它们的类型等。这点是很重要的,如果在此期间选择不适宜的变量或者数组,将来修改就十分困难。程序通过不断扫描游戏者键盘的输入来决定蛇的运动方向,并随时侦测蛇头位置判断蛇是否吃到食物。吃到食物如此按照游戏规如此增长蛇的长度,并更新分数,同时在游戏场景中随机生成新食物,如此循环;当蛇的头部撞击到游戏场景边界或者蛇身时,游戏完毕。游戏者也可以通过按Esc键直接退出游戏。主函数main()通过调用函数InitGraph()实现图形系统初始化,调用函数DrawFence()实现绘制围墙等游戏场景,调用函数GamePlay()实现具体的贪吃蛇游戏,调用函数PrScore()来显

14、示和更新游戏者所得分数,最后通过调用函数Closegraph()完毕游戏。其中,函数GamePlay()是实现贪吃蛇游戏的关键函数。首先,随机出现新食物,设置蛇的初始状态与其运动方向,并将初始得分记零;然后,通过while循环来检测游戏者的键盘输入,以控制蛇的运动方向。当蛇头撞到围墙或自己身体时,如此调用函数GameOver()完毕游戏。需注意的是,由于蛇的头部为两节,第三节蛇身不可能拐过来,因此游戏程序从蛇的第四节开始判断是否撞到自己或围墙。设计关键所在蛇不停移动的:蛇的不停移动,就是蛇的下一节取代前一节的位置,在计算机中就是蛇下一节的位置坐标变成前一节的位置坐标。在上文中,已定义蛇的位置坐

15、标为数组类型,一组坐标对应一节的位置,假设有i+1节,由0到i节,第i节的坐标取第i-1节的坐标,第i-1节的坐标取第i-2节的坐标直到第1节取第0节的坐标。而第0节的坐标,即蛇头的坐标要往某个方向变化,变化量为蛇每节的长度。蛇的这种坐标轮换需要循环语句使其继续下去。 1main()主函数主函数是程序的主流程,首先定义使用到的常数、全局变量与函数原型说明,然后初始化图形系统。 2画面函数DrawFence()主界面就是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,围成密闭图形,表示围墙,为了醒目,设置为淡青颜色,用函数setlinesty

16、le(SOLID_LINE,0,THICK_WIDTH)设置线型宽度为3个像素。设置3个像素的围墙线,蛇在贴墙走的时候,会擦掉局部围墙线,使线变细,图形变得不好看,如果不想这种情况出现,如此将线型宽度设置为1个像素。3游戏具体过程函数GamePlay()这个函数是游戏的主要局部,难点在表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到倒数第二节(因蛇头为两节),将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可,因为新位置0到n-l节还是要出现在画面上的。然后蛇头按照方向键来更改位置。另外,食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐

17、标都是以10为模的,这样的话就可以让蛇吃到,蛇吃到食物的判断是蛇头的坐标和食物的坐标相等。其算法过程为:(1设置初始值。为防止食物总出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始的方向。(2循环执行,直到按Esc键退出。 (3没有按键的情况下,循环执行。如果没有食物,随机出现食物;如果有食物,如此显示食物,蛇移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃了自己,如果出现这两种情况之一,如此蛇死,调用游戏完毕函数GameOver(),完毕本次游戏,重新开始。如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进展相应的改变。在

18、新位置画出蛇。(4如果有按键,如此识别键值。如果按键为Esc键如此完毕游戏,程序运行完毕;如果所按键为方向键,如此根据该键改变代表蛇方向的变量direction的值,要考虑相反方向键无效。4游戏完毕函数GameOver() 游戏完毕,去除屏幕,输出分数,显示游戏完毕信息。5PrScore()输出分数 在指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,bar()函数的应用是为了覆盖原来的值。6Closegraph ()图形完毕在显示游戏完毕信息的画面时,按任意键关闭图形系统,程序完毕。游戏测试是为了发现错误而运行程序的过程,成功的测试是发现了至今尚未发现的错误。1

19、拟定测试计划。根据游戏的总体情况,仔细分析游戏各个步骤的运行可能出现的状况,对各种情况进展汇总,然后拟定出一份具体测试步骤。2初步测试。根据你定好的计划进展游戏调试,出现意外情况时与时记录。测试完后对所记录的意外情况进展分析,然后提出改良的方案,在进展修改。3深度测试。对游戏进展最后的修改,确认没有漏洞后再进展测试从各个方面进展一次整体的排查,直到不再出现意料之外的情况。当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。 这次课程设计我还了解到了开发一个软件所需

20、的步骤,一个软件的开发需要经过可行性研究,需求分析,系统设计,编码的单元测试,调试等功能,在软件开发的每一个阶段都有它的关键之处,它们都为后面软件的开发设计打下了根底,其中的任何一个环节出错都将导致软件开发失败,它们是相辅相成的。为了完成这次的学年论文,我查阅了许多的资料,翻阅了很多有关贪吃蛇编程的书籍。了解到贪吃蛇游戏是可基于多个平台编译的游戏,如基于Java平台、基于Linux平台等,通过C语言和一些图形化编程工具进展编写。而在我整个论文的完成过程中,我进一步的对C语言有了更充分的认识与了解,同时也加深了我对这门学科的兴趣,让我可以在枯燥的程序中找到与众不同的快乐。回顾起此次论文撰写,自从

21、决定题目到完成整个编程,从理论到实践,在这么长的时间里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。参考文献:1C语言大学实用教程学习指导,第二版,电子工业2赵海廷,C语言程序设计,05年版,人民邮电,20053何光明,杨静宇C语言程序设计与应用开发06年版:清华大学,20064X强华. C 语言程序设计.2001年版. 人民邮电.2001.14 / 14

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!