![[计算机软件及应用]C语言课程设计报告.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/11/ec9995aa-9beb-4483-9e48-dc8004ac04e4/ec9995aa-9beb-4483-9e48-dc8004ac04e41.gif)
![[计算机软件及应用]C语言课程设计报告.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/11/ec9995aa-9beb-4483-9e48-dc8004ac04e4/ec9995aa-9beb-4483-9e48-dc8004ac04e42.gif)
![[计算机软件及应用]C语言课程设计报告.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/11/ec9995aa-9beb-4483-9e48-dc8004ac04e4/ec9995aa-9beb-4483-9e48-dc8004ac04e43.gif)
![[计算机软件及应用]C语言课程设计报告.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/11/ec9995aa-9beb-4483-9e48-dc8004ac04e4/ec9995aa-9beb-4483-9e48-dc8004ac04e44.gif)
![[计算机软件及应用]C语言课程设计报告.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/11/ec9995aa-9beb-4483-9e48-dc8004ac04e4/ec9995aa-9beb-4483-9e48-dc8004ac04e45.gif)
已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计编制贪吃蛇程序 院 系: 计算机科学技术学院 班 级: 计11-1 组 长: 孙广东 指导教师: 张凤君 2011年 12 月 28日课程设计任务书一、题目:编制贪吃蛇游戏程序二、设计要求(1)孙广东(组长),冷英松、刘有超、毛磊、刘兵飞组成课程设计小组。(2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)按贪吃蛇算法设计贪吃蛇程序,执行贪吃蛇程序时能在贪吃蛇界面上体现出其执行过程及所走的路线。(5)设计文档说明文件,用户手册等。三、课程设计工作计划2011年12月14日,指导教师讲课,学生根据题目准备资料,需求分析;2011年12月15日,设计小组进行总体方案设计和任务分工;2011年12月16日2010年12月21日,每人完成自己承担的程序模块并通过独立编译;2011年12月22日23日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2011年12月26日,验收、开始撰写课程设计报告;2011年12月28日前,提交课程设计报告和软件。 指导教师签章: 教研室主任签章 程序设计基础课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 年 月 日 目 录1 概述11.1 研究的背景及意义11.2 设计的任务和需要的知识点11.2.1 课程设计主要完成的任务11.2.2 需要掌握和运用的知识点21.3 具体完成的设计内容22 需求分析32.1功能的需求32.2 操作方法32.2.1. 进入游戏32.2.2. 游戏界面32.2.3. 游戏操作32.2.4. 游戏结束33 总体设计43.1 模块划分43.1.1. 主控模块。53.1.2. 动画音乐模块53.1.3. 画主界面模块53.1.4. 游戏过程模块53.1.5. 游戏结束处理模块53.1.6. 读取记录模块53.1.7. 成绩排序模块53.1.8. 写入文件模块53.1.9. 排行榜模块53.1.10.退出53.2 总体数据结构设计53.2.1 苹果与蛇的数据结构53.2.2 排行榜中优胜者的数据结构63.2.3 其他全局变量的定义63.2.4 符号常量的宏定义64 详细设计74.1 主控模块main函数74.2 绘制游戏开始界面drawk函数84.3 游戏具体过程gameplay函数104.3.1 初始化124.3.2 随机确定苹果位置134.3.3 循环确定蛇身的新坐标134.3.4 吃到苹果后的处理134.3.5 有按键判断蛇的方向134.4 游戏的结束处理木块endplay函数134.5 显示排行榜信息模块paih函数155 程序的调试与测试175.1 动画与音乐的同步播放175.2 蛇的运行185.2.1 蛇撞到墙185.2.2 蛇头闯到蛇身185.3 终止循环196 结论207 结束语218 程序清单229 参考文献32贪吃蛇课程设计报告1 概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C语言技术为基础,使用Turbo C+3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点1.2.1 课程设计主要完成的任务1) . 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。2) 有同步播放动画,声音效果。3) 设计好数组元素与蛇,苹果的对应关系。4) 随机产生苹果。5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。1.2.2需要掌握和运用的知识点 本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。 8) 结构化,模块化的设计方法。 1.3具体完成的设计内容 在本次课程设计中需要完成的任务有:包含命令,全局变量的定义和宏定义,函数声明等(50行),主控模块(MAIN函数,25行),动画,音乐播放模块(DRAWDONGHUA函数,45行),画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。开发中工作量约为387行源代码。2 .需求分析 贪吃蛇游戏是个简单的小游戏,能让游戏者的身心得到娱乐,从而能够更好地投入到学习或工作当中。虽然现在市面上出来这各种各样的游戏版本,可是贪吃蛇这类的小游戏其市场还是相当大的,因为它玩法简单易行,不论是手机,还是小游戏机,都能很顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游戏刚好迎合了他们的需求。2.1功能的需求 要开发贪吃蛇游戏程序,首先要分析改程序应实现哪些功能。对贪吃蛇游戏程序的功能需求可描述如下: 程序运行后显示动画,音乐,按ESC键退出游戏界面后,左边有一个圆区,外游戏区域,在圆区中有苹果和贪食蛇,上方有统计分数及关数显示区域。 蛇在封闭围墙利用绿色圆表示,围墙里随机的出现一个苹果,通过按键盘四个光标键控制蛇向上,下,左右四个方向移动,蛇头撞到苹果,则苹果被吃掉,蛇身体长一节,接着又出现苹果,等待蛇来吃。苹果用一个点表示,并且每次苹果的位置都是随机出现的。游戏中要使贪吃蛇尽可能的长,但是不能使贪吃蛇撞到四周的墙壁,而且蛇的身体不能撞到一起,否则游戏结束。游戏中每吃掉一个苹果要有积分,随着分数的增加可进入下一关,即使速度会加快。游戏结束时,如果分数进入前5名则重新排榜并存储。显示排行榜。由于有关贪吃蛇和苹果的数据较多,而且关系密切,贪吃蛇及苹果都是定义结构体数据类型,这样定义便于操作与处理。2.2 操作方法 2.2.1.进入游戏 2.2.2.游戏界面 2.2.3.游戏操作 2.2.4.游戏结束3. 总体设计 确定贪吃蛇游戏体系结构,给出总体模块结构图,确定程序的主要函数及之间的调用关系,同时设计蛇与游戏者等的数据结构。读取记录3.1 模块划分本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功能模块;接着,按需求分析中的功能需求设计第一层模块,有音乐动画,图形驱动,画主界面,游戏过程,结束处理,退出等第6个主要功能;接着,画出第二层模块。总体模块结构如图6-1所示。 主 控 模 板退出结束处理游戏过程画主界面 图形驱动动画音乐排行榜写入文件读取记录成绩排序 图3-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坐标表示,则圆块用函数circle(X,Y,5)或可以画出。由于每次只出现一个苹果,所以设定YES表示是否需要出现苹果。YES=1表示没有苹果或苹果已经被蛇吃掉,需要画出苹果。放置苹果后,置YES=0。蛇的一节身体为一个圆块,表示圆块只需左上角点坐标(X,Y)。由于在游戏过程中蛇的身体不断增长,需用数组存放每节坐标,最大设定为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 排行榜中优胜者的数据结构排行榜主要记录优胜者的姓名和成绩。为了存放排行榜信息,可定义如下的结构体类型,其中字符数组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 “c:person.dat”4 详细设计 根据总体设计的模块功能和结构,完成所承担的程序模块的算法设计。给出每个模块的详细的算法,算法分别用传统流程图和文字说明来描述。4.1 主控模块main函数 主函数是程序的主控模块。首先初始化图形系统,然后使用drawdonghua函数播放动画和声音,接着调用init函数初始化图形系统,之后调用drawk函数画出游戏开始画面,在调用gameplay函数,即开始了游戏的具体过程,游戏结束后调用endplay函数进行游戏结束处理;从文件中读取记录信息,排序,显示排行榜信息,最后关闭图形系统,结束程序。主控模块的流程图如图4.1 所示。其中带有两个竖线的圆框表示对自定义函数的调用。开始余下流程图在下页 初始化图形系统 播放动画音乐 初始化图形系统 画游戏开始界面 游戏具体过程 游戏结束处理 关闭图形系统结束图4-1主控模块算法流程图 图4-1 进入游戏的提示界面4.2 绘制游戏开始界面drawk函数 绘制游戏界面的函数的算法流程图如图4.2 所示。 开 始设 置 前 景 色设置线形为实线,3像素宽i=50i=600余下流程图在下页画上边围墙的一个矩形框画下边为围墙的一个矩形框i=i+10i=40iper4.score 画出填充矩形界面输出提示信息输出空格建立输入框余下流程图在下页 输出不够上排行榜的信息输入游戏者的姓名成绩赋值记录按成绩排序记录写入排行榜文件显示排行榜返回图4-5游戏结束处理模块的流程图图4-6为实际操作图形该块首先调用读取排行榜文件的记录,如果文件不2存在,则在readfiles函数中调用initscorefiles函数建立该文件,然后再读出记录。 其次,判断游戏者的成绩是否可以上排行榜。如果可以上榜,则画出淡蓝色圆界面,在界面中输入游戏者姓名,对成绩进行赋值,然后调用 CompareScore 函数对记录排序,并调用 Writefiles 函数将记录写入排行榜帮文件;如果不能上榜,则直接在游戏界面输出不能上榜信息。 最后,调用 paihb 函数显示排行榜信息。4.5 显示排行榜信息模块paih函数函数void paihb完成排行榜的绘制,流程图如图4-7所示。运行结果如图4-8所示。开 始读排行榜记录文件画出矩形的标题界面输出标题画出排行榜界面输出表头的信息i=0 i5输出有关的信息i= i+ 1余下流程图在下页等 待 按 键返 回图4-7排行榜流程图图6-8 排行榜画面5. 程序的调试与测试 调试与测试软件的目标就是发现并改正潜伏的错误。一个程序,必须经过认真的调试和测试,才能尽量减少错误、保证程序满足功能、性能需求,达到最初的设计、使用要求,从而保证程序的开发质量。详细设计完成后,就可以用C语言根据各个模块的算法来设计程序,每个模块都要设计成一个自定义函数。几个模块可以放在一起构成一个原函数程序文件,也可以一个模块构成一个源程序文件。原程序设计好后,输入到计算机中,并存储到磁盘上;然后对每个源程序文件都进行了独立编译和调试(具体代码可以参看程序清单);并针对不同的模块程序设计测试用例进行单元测试;最后,将几个分别开发的模块组装在一起,形成一个完整的程序,进行集成测试,从而发现并改正了程序程序中存在的一些潜藏的错误,并使程序的容错能力大大增强。调试与测试过程机结果如下所述。5.1 动画与音乐的同步播放 预期结果:片头在显示动画得同时播放音乐;按任意键后进入游戏主界面;进入游戏主界面后动画音乐同时停止。实际运行效果:满足和,即进入游戏后不播放片头音乐。程序中使用循环播放动画,并在其循环体中插入发声函数以达到音乐和动画的同步。在动画播放完后加一条“nosound();”语句将扬声器关闭。程序运行的实际效果与预期效果一致。动画音乐的界面如图5.1所示。图5-1实际操作图5.2 蛇的运行 5.2.1 蛇撞到墙预期结果:蛇运行时如果撞到墙壁,则游戏结束。实际运效果:超出左右上下墙壁后程序结束,判断蛇是否闯到左右上下的围墙。代码:If( snake.x0595| snake.y0455)程序运行结果与预期的结果一致 图5-2实际操作5.2.2 蛇头闯到蛇身 预期的结果:当蛇得头部与蛇身相撞时,游戏应当结束。 实际运行效果:蛇头撞到蛇身时,程序终止。如图5.2.2所示:在蛇的运行判断的程序,其代码如下 Fori=3;isnake.node;i+) if(snake.xi=snake.x0&snake.yi=snake.y0) snake.life=1;break; 运行结果与预期结果一致。5.3 终止循环 经过对各个模块的调试和单元测试并修改了错误后,将各个模块组装成一个系统,并进行集成测试。在集成的过程中发现了一些错误,比如全局变量重复定义、函数重复声明等,分别进行了改正。最后连续运行了5次,以便测试该游戏程序的功能、性能是否达到了预期的目标,并根据所使用的具体机器对蛇的爬行速度进行适当的调整。测试内容包括蛇的运行、分数、关数、排行榜及排序、文件存储、音乐动画等功能,情况均正常。其中第4次运行结束时要求输入游戏者姓名并显示排行榜的界面如图5.3所示。图5-3实际操作图6 结论 通过10天的课程设计,在开发小组共同的努力下,终于完成了贪吃蛇游戏程序的开发任务。该游戏程序实现了用方向键控制蛇在围墙内爬行、随机产生苹果、控制蛇吃掉苹果并加分、控制游戏中闯关的数目和蛇的运行速度、实时显示得分和关数、结束时处理和显示排行榜等功能。该游戏程序具有界面友好、操作方便、控制准确和容错能力强等特点。这个贪吃蛇游戏还存在一些缺陷,还应该加以改进。例如进入游戏后,到蛇死亡,只能玩一次就会退出程序。应加入多次游戏的控制能。7 结束语 贪吃蛇游戏的编程练习思考数据结构:定义苹果的坐标来控制它出现的位置,用一系列的函数时进行表示,比如用函数circle来画出圆,用life变量的值表示蛇的生命,用direction变量的值表示蛇移动的方向等,还有用数组来存放蛇身各节的坐标,这些都让我们熟悉了对数组的操作,此外还熟悉了各种函数的应用。 贪吃蛇的设计有很多帮助,学习编写贪吃蛇的游戏对掌握C语言的知识有很大的帮助。通过编程实践,还能拓展思路,让我们去寻找需要调用那些函数,怎样提高程序的质量等。要写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候就会游刃有余了。在编程时我们要有丰富的想象力,不要拘泥与固定的思维方式,遇到问题的时侯要多想几种解决问题的方案。丰富的想象力是建立在丰富的知识基础上,所以我们要通过多个途径来帮助自己建立较丰富的知识结构。在编程是我们碰倒了很多的困难,这就需要我们多与别人交流。在编程的过程中,我们也发现有良好的编程风格是十分重要的,至少在时间效率上就体现了这一点。养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致,这些都是提高我们编程能力的要点。 在进行课程设计的过程中我们也学到了许多别的东西。首先,我们学会了合作,要以别人的眼光看看问题,也许这样得到的会比各自得到的都要多;其次,我们学会了分工,分工是为了更好地合作,分工才能提高合作的效率;最后,我们学会了奋斗,我们相信,通过四年的学习,我们一定能写出更精彩的程序,将来会描绘出更精彩的人生。在这里,我们要感谢指导课程设计的张凤君老师,给予我们悉心的指导。老师多次询问编写进程,并为我们指点迷津,帮助我们开拓研究思路,精心点拨、热心鼓励。老师一丝不苟的工作作风,严谨求实的态度,踏踏实实的精神,不仅受我以文,而且教我做人,给以终生受益无穷之道。我还要感谢我们开发小组的其他同学,在设计中他们给我很大的帮助。正是由于我们团结协作,才顺利的完成了课程设计任务。8. 程序清单#include#include#include#include#include#include#include#include#define filename c:person.dat /*排行榜文件的文件全名*/#define esc 0x011b /*esc键*/#define n 200 /*蛇的最大节数*/#define left 0x4b00 /*左移方向键*/#define right 0x4d00 /*右移放向键*/#define down 0x5000 /*下移方向键*/#define up 0x4800 /*上移方向键*/ /*排行榜结构体*/struct person int score; /*游戏者分数*/ char name20; /*游戏者姓名*/ per5; /*小蘑菇结构体*/struct mogu int x; /*蘑菇横坐标*/ int y; /*蘑菇纵坐标*/ int speed; /*蘑菇下落速度*/mogu100; /*定义全局变量*/int mogunum=0; /*蘑菇数目*/int size;int change=10;int score=0; /*记录游戏分数*/void * save; /*定义用于蘑菇位图的指针*/int i,key;int gamespeed=400; /*游戏速度*/ /*苹果结构体*/struct food int x; /*苹果横坐标*/ int y; /*苹果纵坐标*/ int yes; /*判断是否要出现苹果的变量*/food; /*蛇的结构体*/struct snake int xn; /*蛇的横坐标组*/ int yn; /*蛇的纵坐标组*/ int node; /*蛇的节数*/ int direction; /*蛇的移动方向*/ int life; /*蛇的生命,0为活着1为死*/snake; /*自定义的函数声明*/void drawmogu(); /*动画音乐函数*/void readfiles(); /*从文件中读取记录信息*/void writefiles(struct person *) ; /*将纪录写入文件中*/void initscorefiles(); /*初始化记录文件*/void comparescore(struct person); /*排行榜按分数进行排序*/void endplay(); /*游戏结束处理函数*/void paihb(); /*绘制排行榜函数*/ /*输出欢迎词并播放音乐函数*/void pr() int s15=0,100,150,200,150,200,250,150,250,300,250,150,100,250,350; setcolor(change/10); /*改变欢迎词的颜色*/ settextstyle(1,0,6); outtextxy(20,200,WELCOME TO OUR GANE!); /*输出欢迎词*/ setcolor(change/15); settextstyle(1,0,6); outtextxy(10,0,*); /*在此界面上方输出一行星号*/ outtextxy(10,450,*); /*在下方输出一行星号*/ outtextxy(60,300,YOU ARE GREAT!); /*/ settextstyle(4,1,6); outtextxy(0,20,*); /*在左面输出一列星号*/ outtextxy(605,20,*); /*在右面输出一列星号*/ sound(schange/10); /*设置扬声器的发声频率*/ /*下雪动画并同步播放音乐函数*/void drawmogu() int i; int sx62; setlinestyle(SOLID_LINE,0,THICK_WIDTH); setcolor(GREEN); /*画蘑菇头部的三条线*/ line(8,0,16,7); line(8,0,0,7); line(0,7,16,7); setcolor(LIGHTMAGENTA); line(8,9,8,15); setcolor(LIGHTBLUE); /*画蘑菇的下面*/ line(6,9,6,15); line(10,9,10,15); line(6,14,10,14); setfillstyle(SOLID_FILL,RED); floodfill(8,4,GREEN); save=malloc(200); /*在堆中申请200字节空间*/ getimage(0,0,16,15,save); /*将蘑菇位图保存到save中*/ cleardevice(); /*清屏*/ randomize(); /*设置随机数的种子数*/ for(i=0;i62;i+) sxi=(i+2)*10; /*计算蘑菇位置的横坐标*/*以下的键控while循环控制播放音乐和蘑菇动画*/ while(!kbhit() /*如果未按键,执行循环体*/ pr(); /*调用pr函数输出欢迎词并播放音乐*/ if(mogunum!=100) mogumogunum.speed=2+random(5);i=random(62);mogumogunum.x=sxi; /*取蘑菇横坐标*/mogumogunum.y=10-random(100); /*计算蘑菇纵坐标*/ for(i=0;imogunum;i+) /*循环放置mogunum个蘑菇*/putimage(mogui.x,mogui.y,save,COPY_PUT); delay(100); /*延迟100毫秒以便看到雪花*/ cleardevice(); /*清屏*/ pr(); /*调用函数输出欢迎词并播放音乐*/ if(mogunum!=100) mogunum+; setfillstyle(SOLID_FILL,WHITE); for(i=0;i500) mogui.y=10-random(200); change+; if(change=140) change=10; nosound(); /*关闭扬声器*/ cleardevice(); /*清屏*/ /*图像系统初始化函数*/void init(void) int gd=DETECT,gm; initgraph(&gd,&gm,c:tc3BGI); cleardevice(); /*清屏*/*游戏开始界面,左上角坐标为(50,40),右下角坐标(610,460)的围墙*/void drawk(void) int i; setcolor(BLUE); setlinestyle(SOLID_LINE,0,THICK_WIDTH); /*设置线性*/ for(i=50;i=600;i+=10) /*用循环画围墙*/ setcolor(2*i+1); circle(i,40,5); /*画上边*/ circle(i,451,5); circle(i,460,5); /*画下边*/ for(i=40;i=450;i+=10) setcolor(2*i+1); circle(50,i,5); /*画左边*/ circle(601,i,5); for(i=40;i0;i-) snake.xi=snake.xi-1; snake.yi=snake.yi-1; /*1、2、3、4表示右、左、上、下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) case 1:snake.x0+=10;break; case 2:snake.x0-=10;break; case 3:snake.y0-=10;break; case 4:snake.y0+=10;break; /*判断蛇是否撞到墙*/ if(snake.x0595|snake.y0445) snake.life=1; /*置蛇死标志*/ break; /*从蛇的第四节开始判断是否撞到自己,*/ for(i=3;isnake.node;i+) if(snake.xi=snake.x0&snake.yi=snake.y0) snake.life=1; /*置蛇死标志*/ break; if(snake.life=1) /*以上两种判断以后,如果蛇死就跳出内循环*/ break; /*跳出while(!kbhit)*/ if(snake.x0=food.x&snake.y0=food.y) /*吃到苹果以后*/ setcolor(BLACK); /*把画面上的苹果擦除*/ circle(food.x,food.y,5); snake.node+; /*蛇的身体长一节*/ food.yes=1; /*画面上需要出现新的苹果*/ score+=10; /*没吃一个苹果增加10分*/ if(score%50=0) /*吃够5个苹果进入下一关*/ level+=1; /*关数加1*/ gamespeed-=60; /*控制速度的值减少60,以便加快速度*/ setcolor(RED); /*画出红色蛇的循环*/ setfillstyle(SOLID_FILL,RED); /*用圆画出红色蛇头*/ fillellipse(snake.x0,snake.y0,5,5); setcolor(GREEN); setfillstyle(SOLID_LINE,GREEN); circle(snake.x0,snake.y0,1); /*对蛇头填充绿色小圆作为眼睛*/ setcolor(RED); setfillstyle(SOLID_FILL,BLUE); for(i=1;isnake.node;i+) /*用圆画出红色蛇身*/ setcolor(RED); setfillstyle(SOLID_FILL,BLUE); fillellipse(snake.xi,snake.yi,5,5); /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年上海房地产买卖合同模板
- 2025宠物猫买卖合同范本
- 工地水管出租合同范本
- 景区摊位出租合同范本
- 塔吊机司机合同范本
- 电脑升级合同范本格式
- 生产顾问聘用合同范本
- 全季酒店合同范本
- 2025标准土地转让合同模板
- 临沂代课教师合同范本
- GA 1804-2022危险化学品生产企业反恐怖防范要求
- 监理日志(监理表格)
- HDI基础知识培训教材
- 核心素养背景下的小学音乐课“大单元教学设计”方法分析
- GB/T 2423.17-1993电工电子产品基本环境试验规程试验Ka:盐雾试验方法
- GB/T 10228-2015干式电力变压器技术参数和要求
- 染色打样的步骤
- FZ/T 07014-2021绿色设计产品评价技术规范聚酯涤纶
- 新型敷料的特性及选择
- 江苏城市规划收费标准
- 花生膜下滴灌技术
评论
0/150
提交评论