贪吃蛇小游戏的开发与设计.docx
贪吃蛇小游戏的开发与设计摘要 贪吃蛇小游戏是一款大家都比较熟悉的小游戏,每个人基本都玩过,实现游戏的关键就是要构建好贪吃蛇在游戏界面中上下左右移动的框架,这样就比较容易的开发好这款小游戏。在本次毕业设计当中,我的题目是贪吃蛇小游戏的开发与设计。在这个设计当中,所用的工具为eclipse,在设计之初,通过对这款游戏的技术可行性和经济可行性进行了分析,了解了用户对这款小游戏的基本需求,我主要是通过创建了五个java类来实现贪吃蛇的一些功能,通过创建食物类实现了食物的构建和食物不断刷新位置的功能,通过贪吃蛇类实现了贪吃蛇的构造和蛇头切换功能,通过界面类实现了游戏界面的设置,通过框架类实现了窗体的大小和出现消失功能。其次,在这款小游戏中加上了音乐功能,主要是通过设置music函数,start函数,stop函数来实现音乐这个功能,使玩家在玩游戏的同时可以享受音乐。关键字 游戏 java 贪吃蛇 食物 类Development and design of snake gameAbstract Snake game is a small game that everyone is familiar with. Everyone has played it. The key to realizing the game is to build a frame for snake to move up and down in the game interface, this is relatively easy to develop this small game. In this graduation project, my topic is the greedy snake small game development and the design. In this design, the tool used for eclipse, in the early design of the game through the technical feasibility and economic feasibility analysis, understand the user's basic needs for this small game, i basically created five Java classes to implement some of the functions of greedy snake, and created a food class to build and refresh the food's location, the structure of snake and the function of snake head switch are realized by snake, the game interface is set by interface class, and the form size and vanishing function are realized by frame class. Secondly, in this small game added music function, mainly by setting music function, start function, stop function to achieve the function of music, so that players can enjoy music while playing the game. Keywords Game,Java,Snake,food,Class目 录1 引言11.1 游戏的特点11.1.1 可以体现人的转观能动性11.1.2 可以给用户带来前所未有的体验和新鲜感11.1.3 减少了和外界的交流的机会11.2 游戏的产业现状11.3 游戏的发展历史22 java的简介32.1 java的功能和特点32.2 java的发展及背景32.3 系统的开发环境32.3.1 eclipse的产生与发展42.3.2 eclipse的基本配置要求42.3.3 eclipse的内容简介42.3.4 eclipse的界面52.3.5 eclipse的特点53 游戏分析63.1 游戏的可行性分析63.1.1 技术上的可行性63.1.2 运行上的可行性63.2 设计思路64 框架设计84.1 游戏设计的思想84.2 游戏的功能设计84.3 游戏设计方案84.3.1 画面设计84.3.2 游戏过程84.3.3 游戏结束94.3.4 功能添加94.4 游戏流程图95 详细设计115.1 游戏具体过程函数115.2 主要设计函数介绍115.2.1 游戏界面设计函数115.2.2 食物构建函数125.2.3 音乐函数135.2.4 贪吃蛇移动函数145.3 其他函数代码155.3.1 贪吃蛇构造代码155.3.2 重新开始贪吃蛇的代码165.3.3 蛇头切换的代码175.3.4 判断吃到事物的代码175.3.5 判断咬到自己死亡的代码176 运行与测试196.1 运行程序196.2 程序的调试与测试206.3 终止程序217 总结228 致 谢23参考文献:24附 录251 引言1.1 游戏的特点1.1.1 可以体现人的转观能动性像我们平时的看电视等,都属于被动接受;当然,我们玩电脑游戏时,也有着一部分的被动接受,但是,其中更多的体现的是玩家的自己的一个意愿。换句话说,电脑游戏是我们玩家和游戏情节的一个互动!从中不难发现,这也是为什么现在越来越多的青少年不愿意宅在家里区看电视而是选择去网吧玩电脑游戏! 1.1.2 可以给用户带来前所未有的体验和新鲜感在电脑上玩游戏还是有一定的难度的,但是这种难度是我们可以接受的。这种难度比不上生活所带给我们的难度,并且没有我们生活中的繁琐和乏味。所以,完全可以给玩家带来前所未有的新鲜感和刺激感。当然,这肯定是电脑游戏可以喜迎大部分玩家的主要原因之一。 1.1.3 减少了和外界的交流的机会现如今,越来越多的青少年选择宅在家里,不愿意出去与别人交流,不愿意去接受这个世界。人们厌倦这种戴面具的日子。这时候,电脑游戏就完全可以让我们躲避这些。当然,在电脑游戏中,我们也会多多少少的与他人交流。但是,这是我自己的地盘,自己的王国,在这里,都要听我的。1.2 游戏的产业现状据报告显示,自21世纪开始,我国国内的游戏市场取得了突破性的进步,探索新的发展模式和途径取得较快增长。我国也通过海外市场不断的提高自己的游戏产业,数据表明,美国已成为中国游戏企业出海的重要目标市场。这几年来,我国游戏产业发展稳中有升全国各地的大中小城市都抓住游戏发展的机遇,不断的加大对游戏产业的投资力度和加速建设了一个又一个的游戏产业园,接踵而来的是,不仅让当地的经济发展取得了跨越式的进步,而且还提高了当地老百姓的生活水平,毫无保留的促进了我国的游戏产业链的发展。在2019年上个季度,我国游戏开发基地就开始倾斜于原创产品的设计,并通过日复一日的努力取得了傲人的成绩。根据数据显示,从2019年开始,我国就加大了对游戏产业的原创和高新技术的研究于开发,我们的研究开发人员在游戏产品和管理运营当中将我们自主研发的高新技术融会贯通,为我们国产的原创游戏打下了一个良好的基础。原创化游戏是大势所趋,中国通过多年的努力也赢得了海外市场的关注和认可,因此,中国的游戏产业在国际上的地位也就显著提高了。同时,我国的游戏市场不断向海外开拓。不断的收购海外的游戏市场,形成一个中国特有的游戏市场,显著的提高了中国预习产业在国际上的地位,提高了话语权从而也大大增加了我国游戏市场在国际市场上的竞争力。1.3 游戏的发展历史可以这么说,什么时候有了电脑,什么时候就有了游戏。上世纪60年代,在我们当中,就有一小部分程序员开始开发一些小游,但是在那种情况下,大家都把他们的这种做法当作是对计算机行业的研究罢了。由于当时计算机行业的不普遍,再加上电脑软件和硬件的限制,这些游戏只能为一些比较高层的计算机相关人士所知晓。到了80年代,世界上第一款pc机问世后,计算机开始进入平常百姓家。在接下来的几十年时间里,计算机的软件和硬件都发生了历史性的突破,人们可以随心所欲的开发各种小游戏。许许多多的游戏被开发出来之后,有的是真的可以达到满足人们放松身心的需求,但是很大一部分的游戏并没有叨叨这个需求,反而让人上瘾,耽误了工作,甚至破坏了家庭和睦,这也违背了我们开发游戏的初衷,所以,这类游戏还是少出现在人们的视野中较好。现如今,世界已是一个信息时代,每个国家都在摩拳擦掌。所以,理所当然,计算机游戏成为了许多软件开发商争抢的一块风水宝地。信息时代的世界,人们的生活水平和经济水平都得到了普遍的提升,尤其是我国,在经历了抗日战争和解放战争之后,经济水平快速发展,已经跻身世界第二强国。所以紧接着,就要出现合适我国人民乃至世界人民都需要的休闲方式,游戏就应运而生了。虽说,吴国自古以来,都有着不少的游戏方式在满足我们人民的休闲生活,但是毕竟现在是21世纪,古老的游戏方式已经明显满足不了人们的需求,所以,电脑游戏就开始出现在人们的视野当中,这也就是为什么许多的软件开发商如此争抢游戏开发这块宝地,使世界游戏产业水平提高到了很大的一个层次。2 java的简介2.1 java的功能和特点跨平台的面向对象的设计是Java的特点。Java具有高超的适用性,效率性,跨平台性和可靠性,被广泛应用于国际互联网和大数据领域,与此同时,java具有着全球人数最多,专业最强的开发社群。Java语言是可学的,易学的。Java语言在某些方面和C语言及C+语言有着异曲同工之处,这就使得我们一线的程序员都在学习和使用Java语言,也很容易上手。从一方面来说,Java舍弃了C+中不入流的,难以理解的,不易操作的地方,如操作符重载,多继承,自动的强制类型转换。尤其要强调的是,Java语言采用引用,并不使用指针。而且会自动的搜集废料,这就使得我们一线的程序员不用为了内存大小的问题而分心。分布式的形式也是Java的一个特点。Internet开发可以被Java语言所接受,网络应用编程接口(java net)是Java的一个相对来说比较基本的接口,网络应用编程的类库也是它所提供的。Java的RMI(远程方法激活)机制也是开发分布式应用的手段。2.2 java的发展及背景在现实生活当中,人与人交流是通过语言来完成的,如出一辙,我们如果要和计算机交流也需要这么一种语言。在上世纪90年代,Sun公司通过不懈的努力研究出一种新兴的编程语言JAVA。是由Java 之父 詹姆斯.高斯林 领导的一个小组开发的。加入消费类嵌入式软件是开发这种语言的最初目的。经过多年的发展,人类开始认识到跨平台和可移植,所以,这种语言Java很快就得到了大家的认可并广为传播。当java发展到第二代的时候,Java 分成 JavaSe JavaMe javaEe,即标准版,企业版,微缩版三个版本。最终,java获得了很大一部分一线程序员的青睐,也就是说,经过多年的开发与改进,java始终把开发者放在第一位,尽一切可能满足开发者的需求,正是因为这样,Java语言才能获得今天这样的成就,也就意味着,Java语言取得了成功。2.3 系统的开发环境2.3.1 eclipse的产生与发展早在上世纪90年代中期,世界上就有这几个强大的开发环境。微软公司的Visual Studio的发展方向是多用途工具。也出现了几个基于Java的集成开发环境,所以,许许多多的软件开发公司就着手开始对Java语言的开发。从这一阶段开始,用来使程序开发人员不再关心细节和相应的服务器出现问题,从而大大减少了开发人员的麻烦,从而间接的提高了开发效率。从Java开发的角度,平台给予了我们相对应的应用服务器。在那时,微软提供的MTS和COM+是当时开发人员使用的运行时的环境。我们不难看出eclipse经过多年的发展有着喜人的成绩,受到了广大程序员的青睐。截至目前已经有12个会员加入了Eclipse,加入当中的每一个会员每年都会提供一大批开发人员和投入大量的资金。此外,国际上还有13个软件开发公司与之合作。当然,如果你肯花时间去研究这一块,你就会发现有许许多多的插件都和eclipse有关联,并且都能够生成产品。Eclipse现在是业内主要的非微软软件工具平台。2.3.2 eclipse的基本配置要求1、JAVA_HOME:jdk的根目录(安装的目录)2、CLASSPATH:保证程序运行时找打 ”.class"文件(lib)3、PATH:JDK安装目录的 bin文件夹2.3.3 eclipse的内容简介Eclipse的组成:eclipse主要是开放源代码,侧重于为高度集成的工具提供一个功能较全同时也具备商业性的这样的一个平台。最重要的是由项目,工具项目和技术项目三个部分组成。Eclipse平台允许工具建造者独立开发与他人无缝集成的工具从而分辨在哪里结束,同时又在哪里开始。2.3.4 eclipse的界面图2.3.4(1)eclipse的界面2.3.5 eclipse的特点强大的集成开发环境是eclipse的突出优点,cvs,JUnit和Ant被他占为己有,而且,在代码重构功能方面,他有着其他开发软件所不具有的战略性优势。Java的开发环境在eclipse当中,所以Eclipse默认就是一个Java开发工具。但是,换句话说,eclipse不仅是为java服务,如果装上C/C+开发环境插件(简称CDT),我们的eclipse就是一个C/C+的开发工具。可以这么说,如果你有任何一种相关的插件,Eclipse就能够成为任何一种开发工具。Eclipse他最突出的有点和最强大的功能就是他的插件扩展机制,插件扩展机制使eclipse上升了一个无与伦比的高度。我们现实生活当中有着成千上万的这种插件,它既可以是一种桌面应用工具,也可以是众多编程工具当中的一种工具。Eclipse有了一种无限扩展的可能性就是因为有利这种插件机制,Eclipse就好比一个功能巧妙的插画底座,我们可以在底座上面插上梅花,百合,向日葵,这样,eclipse就会变成一个完全不一样的工具。3 游戏分析3.1 游戏的可行性分析可行性分析从一方面来说也可以叫做可行性研究,在对方案进行全面调查的情况下,做一种新系统的开发方案,从影响、技术等方面进行相关的研究,从而对新系统的成功开发做出保证,进而排除失败的可能性。可行性分析主要的目的在最短的时间内花最小的成本并且成功的解决问题,具体的可行性研究包含下面几个方面:3.1.1 技术上的可行性 技术上可行性是分析我们的技术是否能够满足我们的系统开发,以及开发者对软件、硬件需求能否达到预期的需求等。贪吃蛇这款游戏,我们采用了java语言作为开发工具,建图采用图形库函数,辅以算法演示。Java语言是面向结构化程序设计的语言,它既具备高级语言高效率的实现又具备低级语言高效率的执行。并且它有着丰富的数据类型和函数类型,它的修改、编辑都比较简单,代码模化块程度高,这对于扩展和后期的修改非常有利。 以上就是对本系统技术的可行性的分析,所以无论是从技术还是硬件设备方面,本系统都是满足条件的,符合技术上的可行性。3.1.2 运行上的可行性贪吃蛇是一款非常简单的小游戏,基本上没有多少资源损耗,自用的电脑就足以满足开发条件,满足运行的可行性。3.2 设计思路贪吃蛇这款游戏是一款十分休闲益智类的游戏,源代码的编译采用TC2.0,其继承环境中包含了所需的图形驱动文件。本程序中蛇身体的连接是采用数据结构的链表来实现的,其蛇头每次吃掉一个食物都会使得身体增长一节,所得的分数等程序的信息会时刻被显示在屏幕,所以,蛇身会随着时间的推移越来越长,这个时候就要注意我们的蛇身,千万不要让他碰撞到自己的蛇身或者撞到墙壁,否则,游戏就自动结束,所以,这就增加了游戏的难度,形成一个关卡的效果,给人们带来一种前所未有的体验,当然,其运行速度与cpu速度也有关联。游戏人机交互界面是否简洁,游戏过程中玩家可以开动脑筋,发挥自己的才智,让蛇身变长,取的高分,十分适合闲暇时活动脑筋,让自己头脑变的更灵活。是人们在工作的苦恼和生活的奔波的双重压力下放松一下自己的身心,回归身心,舒缓心灵。这也使得我们第二天也有着更大的动力和信心,尤其是有着更舒缓的心情去面对工作,面对家庭,达到工作顺利,家庭和睦的效果,这也是我们开发游戏的初心。4 框架设计4.1 游戏设计的思想我们要利用我们所能掌握的现有资源,通过之前前辈们对游戏的开发经验,同时,我们要好好利用学校的有关方面的资源,把我们的精力最小化的放在寻找资源上,减少所需时间和空间,但是,也要保证这款游戏的开发处在一个较高的水平和达到一个教好的应用效果。用户的需求是我们开发这款游戏的首要出发点,迄今为止,游戏仍然是我们当下社会比较受欢迎和比较流行的一种娱乐方式,其他的方式与它相比,游戏的自身优势就很显而易见了。类的应用是本程序的主要方法和规律。我们可以通过掌握java语言的技巧来编写此程序,在提高我们编程水平的同时来增加对编程的兴趣。同时,也可以为我们的忙碌生活增添一抹清闲和娱乐。4.2 游戏的功能设计一个清晰美观的界面,我们在设计的时候,用一个矩形区域作为游戏界面,贪吃蛇可以在矩形区域中可以吃食物和慢慢长大。游戏开始时,蛇身加上头部一共有3节,蛇身用蓝色小圆圈表示,每吃到一次食物,贪吃蛇的身体就会长长一节。同时,我们得食物也是用一个黄色小圆圈代表,并且,食物因也是随机出现的。玩家玩这款游戏的目的是让贪吃蛇不断的吃食物,让蛇身不断的变长,但这里我们要强调的是,玩家在操作游戏的同时切忌不能让贪吃蛇碰到墙壁或者撞到自己的身体,如果这样的话,那么游戏结束。4.3 游戏设计方案4.3.1 画面设计(1) 关于面板,食物,贪吃蛇的设计,采用了一些函数,链表和库函数;(2) 对于整个画面的启动问题,还有就是整个画面的绘制,我们采用的是黑色面板;4.3.2 游戏过程贪吃蛇这款游戏主要的设计方向就是蛇和食物。游戏程序在eclipse中能否成功运行的关键点就是在这个环节中有几个极为重要的算法,这几个算法在程序中起着极为重要的作用。其中几个主要的程序包括蛇是如何吃到食物的;玩家是怎样让蛇身移动的;游戏得分的增加和生命的增加;还有就是判断蛇的死亡和游戏的停止等。4.3.3 游戏结束包括两个方面:(1) 贪吃蛇何时死亡;(2)贪吃蛇死亡的同时也就代表着游戏的结束;4.3.4 功能添加我们在设计的同时增加了背景音乐,玩家可以在玩游戏的同时,享受音乐带来的乐趣,带来不一样的游戏体验,进入游戏世界的同时,也进入一种音乐世界,给玩家带来双重体验感,让玩家爱上这款游戏,并且达到可以让玩家推荐给身边人的效果。4.4 游戏流程图流程图的制作是根据我们贪吃蛇这款小游戏的功能及各项过程配合来制作的,可以比较清楚的看到贪吃蛇小游戏的运行过程和操作流程。之所以制作流程图,也正是向大家展示贪吃蛇这款小游戏的整个框架,让大家更直观的去了解贪吃蛇这款小游戏并喜欢上它。开始游戏初始化界面游戏开始运行按键选择蛇行进方向为按键方向蛇正常行驶蛇吃到食物蛇头与蛇身交叉蛇死亡玩家游戏结束图4.4游戏流程图5 详细设计5.1 游戏具体过程函数 SnakeFrame():游戏界面函数 Food():食物构建函数 Music():构建音乐函数 If():贪吃蛇移动函数5.2 主要设计函数介绍5.2.1 游戏界面设计函数本函数的目的就是设置主界面,主界面就是一个完全密封的矩形框,贪吃蛇能在矩形框里面上下左右移动,在框内主要是食物和蛇,贪吃蛇碰到这个框的边界就会死亡,也就意味着游戏结束。设计了面板的宽和高,并把面板装载到窗体上。部分代码如下:public class SnakeFrame extends JFrame /* * 程序入口-SnakeFrame */private static final long serialVersionUID = 1L;/ 属性public static final int WIDTH = 900;/*面板的宽度*/public static final int HEIGHT = 720;/*面板的高度*/ 构造public SnakeFrame() setTitle("贪吃蛇");/ 设置标题setBounds(0, 0, WIDTH, HEIGHT);/ 设置位置、大小SnakePanel boli = new SnakePanel();/ 创建面板对象add(boli);/ 把面板装载到窗体上setResizable(false);/ 设置窗体大小不可变setVisible(true);/ 设置窗体的可见/ 设置当窗体关闭时,后台程序也关闭setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);程序分析:主要是构造了窗体的大小,位置,设置了窗体的大小不可变和当窗体关闭时,后台程序也关闭,使得贪吃蛇有一个空间去活动,让玩家有一个较大的空间去让贪吃蛇的蛇身尽可能的变长,满足玩家的游戏体验。5.2.2 食物构建函数食物函数主要是不断的构造食物,然后不断的刷新食物所在的位置,贪吃蛇每吃到一次食物,食物就会自动消失,这个时候,同样的食物就会出现在游戏界面的另外一处地方,循环往复,部分代码如下: public class Food / 属性int foodx;/食物的x轴int foody;/食物的y轴static Image foodImg;/静态 static foodImg = new ImageIcon("src/tanchishe/food.png").getImage();/ 构造public Food() foodx = (int) (Math.random() * 34) * 25 + 25;/随机x轴foody = (int) (Math.random() * 24) * 25 + 75;/随机y轴/刷新食物位置的方法public void newfood() foodx = (int) (Math.random() * 34) * 25 + 25;/刷新食物随机x轴foody = (int) (Math.random() * 24) * 25 + 75;/刷新食物随机y轴程序分析:主要先定义了食物的X轴和y轴,再用构造食物函数设置食物,最后用刷新事物函数不断刷新食物所出现位置。贪吃蛇吃到一截食物,身体就会长长一截,食物就会出现在游戏界面的另外一处地方,循环往复。5.2.3 音乐函数使玩家在玩游戏的同时也能享受美妙的音乐,舒缓身心,带来不一样的游戏体验,部分代码如下:public class Music / 构造 AudioStream as=null;public Music() try System.out.println(System.getProperty("user.dir")+"srctanchishemusic.wav");FileInputStream fileau=new FileInputStream(System.getProperty("user.dir")+"srctanchishemusic.wav");try as = new AudioStream(fileau); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace();/函数/播放音乐public void startit() AudioPlayer.player.start(as);/删除音乐public void stopit() AudioPlayer.player.stop(as);程序分析:运用了构造音乐函数,音乐开始函数,音乐删除函数,达到播放音乐和删除音乐的效果,给玩家带来另一种游戏体验。5.2.4 贪吃蛇移动函数通过if函数使得贪吃蛇能在窗体内来回的移动,通过控制键盘上的上下左右键来控制贪吃蛇的上下左右移动,操作简单易学,部分代码如下:if (isStarted && !isFailed) / 移动贪吃蛇身体(必须从后往前)for (int i = snake.len; i > 0; i-)/for循环 snake.snakexi = snake.snakexi - 1;snake.snakeyi = snake.snakeyi - 1;/ 移动贪吃蛇头并设定边界(撞墙死版本)if (snake.state = 1) /第一状态snake.snakex0 = snake.snakex0 + 25;if (snake.snakex0 >= 850)isFailed = true; else if (snake.state = 2) /第二状态snake.snakex0 = snake.snakex0 - 25;if (snake.snakex0 <= 25)isFailed = true; else if (snake.state = 3) /第三状态snake.snakey0 = snake.snakey0 - 25;if (snake.snakey0 <= 75)isFailed = true; else if (snake.state = 4) /第四状态snake.snakey0 = snake.snakey0 + 25;if (snake.snakey0 >= 650)isFailed = true;程序分析:通过for循环控制蛇身移动,移动贪吃蛇头并设定边界(撞墙死版本),有四个不同的撞墙死状态,移动贪吃蛇来吃蛇无,从而达到让贪吃蛇不断变长的目的。5.3 其他函数代码5.3.1 贪吃蛇构造代码public class Snake / 属性static Image snakeHeadImg;/ 贪吃蛇头static Image snakeBodyImg;/ 贪吃蛇身体static Image upImg;/上static Image downImg;/下static Image leftImg;/左static Image rightImg;/右int snakex = new int1000;/ 贪吃蛇的x坐标int snakey = new int1000;/ 贪吃蛇的y坐标int len;/ 贪吃蛇的长度int state;/ 贪吃蛇的方向: 1右 2左 3上 4下int score;/ 当前分数static upImg = new ImageIcon("src/tanchishe/up.png").getImage();/向上图片downImg = new ImageIcon("src/tanchishe/down.png").getImage();/向下图片leftImg = new ImageIcon("src/tanchishe/left.png").getImage();/向左图片rightImg = new ImageIcon("src/tanchishe/right.png").getImage();/向右图片snakeBodyImg = newImageIcon("src/tanchishe/snakebody.png").getImage();/蛇身图片程序分析:静态的上下左右并加上图片,贪吃会舍得上下左右四种状态5.3.2 重新开始贪吃蛇的代码public void newsnake() snakeHeadImg = rightImg;len = 3;/蛇身最初为3节state = 1;/第一状态score = 0;/得分为0snakex0 = 100;/x轴为100snakey0 = 100;/y轴为100snakex1 = 75;/x轴为100snakey1 = 100;/y轴为100snakex2 = 50;/x轴为100snakey2 = 100;/y轴为100程序分析:重新开始贪吃蛇函数最初的蛇身为3节,最初的得分为0分,蛇重新出现的位置。5.3.3 蛇头切换的代码public void step() if (state = 1) snakeHeadImg = rightImg;/第一个状态 else if (state = 2) snakeHeadImg = leftImg;/第二个状态 else if (state = 3) snakeHeadImg = upImg;/第三个状态 else if (state = 4) snakeHeadImg = downImg;/第四个状态程序分析:通过四个if函数来判断蛇头的方向,出现4个状态,做出对应的操作。5.3.4 判断吃到事物的代码if (snake.snakex0 = food.foodx && snake.snakey0 = food.foody) snake.len+;/蛇身长度加1snake.score+=10;/分数家10food.newfood();/食物出现在另一个位置程序分析:通过if函数来判断贪吃蛇是否吃到食物,若吃到食物则蛇身加1,分数加10.5.3.5 判断咬到自己死亡的代码for (int i = 1; i < snake.len; i+)/for循环 if (snake.snakex0 = snake.snakexi && snake.snakey0 = snake.snakeyi)/食物x,y的位置isFailed = true;/失败repaint();程序分析:首先通过for循环,然后也是通过if函数来判断贪吃蛇在运动的过程当中是否碰到蛇身,若碰到,则死亡,游戏结束。6 运行与测试6.1 运行程序(1)首先打开eclipse开发工具,分为五个类,将我们之前编写好的程序分别复制到每个类中,进行编译,如图所示 图6.1(1) 编译由图可知,代码未发现错误图6.1(2) 编译无错误(1) 点击运行按钮,进入界面,如图所示图6.1(3) 开始界面(2) 贪吃蛇死亡的同时也就意味着游戏的结束,游戏界面会出现“Game over”的样子。图6.1(4) 结束界面6.2 程序的调试与测试我们要想发现错误并且修正错误只有通过程序的调试与测试。我们要经过认真的调试和测试才能保证一个程序的完美运行,才能达到我们最初的设计要求,满足客户的需求,从而保证程序的开发质量。(1) 制定测试规划。可以根据程序运行的具体情况,认真分析程序运行过程中每一步会发现的状况,然后对每一种可能会出现的情况惊醒以个汇总,最后对其做出一份具体的测试方案。(2) 初步测试。按照之前去所制定好的规划进行调试,若发生其他特殊情况一定要做好记录。测试结束之后对所记录的情况进行具体分析,然后做出改进方案,再次进行测试。(3) 深度测试。最后的测试,在确定所有故障都排除之后进行一次整体的排查,知道不钻出现特殊情况为止。设计完成后,用java语言根据各个类的函数设计程序,我们可以通过自定义函数来遍历每一个模块。构成源程序文件就是将几个函数放在一块,一个源程序文件由一个模块构成。源程序设计好后,就可以存储在计算机的磁盘当中;之后我们分别对每一个源程序文件进行简单的运行和测试;接下来我们就可以对每一个模块进行相应的单元测试;最后,组装到一起,形成一个完整的程序,进行最后的测试,在这个过程中,我们要发现一些之前没有出现过的问题并对他最初改正,达到最初所需的效果。6.3 终止程序进过所有的运行和测试之后,进行集成测试,测试内容包括贪吃蛇的行动,得分,音乐等的功能,情况均较为正常,未发现错误。贪吃蛇小游戏能够按照游戏规则运行。7 总结编程是一个非常精细的工作,它面向的是一串一串的枯燥的代码,任何细微的错误都会影响程序的正确运行,所以我们比较十分的细心。虽然过程十分辛苦和枯燥,但每当编辑调试成功运行后都会让自己有一种成就感