系统简介

贪吃蛇小游戏是一款大家都比较熟悉的小游戏,每个人基本都玩过,实现游戏的关键就是要构建好贪吃蛇在游戏界面中上下左右移动的框架,这样就比较容易的开发好这款小游戏。在本次毕业设计当中,我的题目是贪吃蛇小游戏的开发与设计。在这个设计当中,所用的工具为eclipse,在设计之初,通过对这款游戏的技术可行性和经济可行性进行了分析,了解了用户对这款小游戏的基本需求,我主要是通过创建了五个java类来实现贪吃蛇的一些功能,通过创建食物类实现了食物的构建和食物不断刷新位置的功能,通过贪吃蛇类实现了贪吃蛇的构造和蛇头切换功能,通过界面类实现了游戏界面的设置,通过框架类实现了窗体的大小和出现消失功能。其次,在这款小游戏中加上了音乐功能,主要是通过设置music函数,start函数,stop函数来实现音乐这个功能,使玩家在玩游戏的同时可以享受音乐。
关键字 游戏 java 贪吃蛇 食物 类

1 引言

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”)+“\src\tanchishe\music.wav”);
FileInputStream fileau=new FileInputStream(System.getProperty(“user.dir”)+“\src\tanchishe\music.wav”);

			try {
				as = new AudioStream(fileau);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.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.snakex[i] = snake.snakex[i - 1];
snake.snakey[i] = snake.snakey[i - 1];
}
// 移动贪吃蛇头并设定边界(撞墙死版本)
if (snake.state == 1) {//第一状态
snake.snakex[0] = snake.snakex[0] + 25;
if (snake.snakex[0] >= 850)
isFailed = true;
} else if (snake.state == 2) {//第二状态
snake.snakex[0] = snake.snakex[0] - 25;
if (snake.snakex[0] <= 25)
isFailed = true;
} else if (snake.state == 3) {//第三状态
snake.snakey[0] = snake.snakey[0] - 25;
if (snake.snakey[0] <= 75)
isFailed = true;
} else if (snake.state == 4) {//第四状态
snake.snakey[0] = snake.snakey[0] + 25;
if (snake.snakey[0] >= 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 int[1000];// 贪吃蛇的x坐标
int[] snakey = new int[1000];// 贪吃蛇的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;//得分为0
snakex[0] = 100;//x轴为100
snakey[0] = 100;//y轴为100
snakex[1] = 75;//x轴为100
snakey[1] = 100;//y轴为100
snakex[2] = 50;//x轴为100
snakey[2] = 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.snakex[0] == food.foodx && snake.snakey[0] == food.foody) {
snake.len++;//蛇身长度加1
snake.score+=10;//分数家10
food.newfood();//食物出现在另一个位置
程序分析:通过if函数来判断贪吃蛇是否吃到食物,若吃到食物则蛇身加1,分数加10.
5.3.5 判断咬到自己死亡的代码
for (int i = 1; i < snake.len; i++)//for循环 {
if (snake.snakex[0] == snake.snakex[i] && snake.snakey[0] == snake.snakey[i])//食物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 总结

编程是一个非常精细的工作,它面向的是一串一串的枯燥的代码,任何细微的错误都会影响程序的正确运行,所以我们比较十分的细心。虽然过程十分辛苦和枯燥,但每当编辑调试成功运行后都会让自己有一种成就感,经过自己几天的勤劳付出,终于有了一个美好的结果。这是一次java语言实践运用的机会,是对自己能力的体现,也是对自己耐心和细心的考验。在这次设计中,我主要应用了5个不同的类来实现了贪吃蛇这款小游戏。
自己做的这款贪吃蛇小游戏虽然是一个简单的游戏程序,但是在编程的过程中也是困难种种,对于一个初学者的来说确实是一个小挑战,刚开始编程时不知道从何下手,不知道该如何让各个分散的区块合成一个完整的成品,经过后来几天的查阅相关资料和复习自己以前学过的一些知识和借鉴一些他人的相关程序,终于理清了思绪,开始着手编写程序。
毕业设计是对我们毕业生全方面能力的考验,是对我们大学学习的知识运用到实践中的体现。现代社会计算机技术已经成为我们离不开的东西,是信息时代的必要也十分重要的技术,在这方面程序开发便是实现计算机能力的重要手段,在众多开发语言中,java语言是十分常见又较为简单的,所以我觉得用java语言来开发这款小游戏是一件十分有意义的事情,在这个过程中虽然遇到了许多问题,但我通过请教他人和查阅资料很顺利的解决了这些问题,是自己在无形之中得到提升,也发现了自己的不足,例如指针,结构体等。让我重温了这些知识,也是对自己的提升。但是,也有些许的不足,在游戏界面的边界部分,如果食物出现在界面边界的时候贪吃蛇如果一碰到食物,那么贪吃蛇就会死亡,游戏结束,在这一方面没有达到最初的设计目的,希望在后面的学习中能够解决这一问题。
这次的毕业设计,从程序设计再到程序开发很好的锻炼了我的个人能力,让我对java语言又有了更多更全面的认识,在实践中提升,这是个非常有效的手段,查漏补缺让我的知识储备更加全面。回顾之前学习的知识,我发现无论学习哪种语言哪种计算机技术,最有效最关键的还是在于实践,光有书面知识远远不够,实践出真知。在学习计算机技术时是非常必要的,在实践中提升,在实践中创新,这才是向更好方向发展的重要道路,所以在今后的学习或者工作中,我会更加的去重视实践。
虽然毕业设计的过程是非常辛苦的,但是从中我们可以收获快乐和喜悦,当看到贪吃蛇在界面中来回运动时,你会感觉一切都是值得的。如果给我更多的时间或者人力的话,我相信我可以在老师的帮助下加上游戏关卡的功能并解决边界问题。

8 致 谢

行文至此最后落笔之处,也意味着四年本科生涯即将结束。时光如白驹过隙,始于2016年初秋,终于2020年盛夏,目光所及,皆是回忆,心之所思,皆是过往。首先我要感谢在我成长路上给予我帮助的每一个人,不是他们的教导,我也不会懂得感动,在最近的几个月里,我受到了成晓燕老师的悉心指导,调整学识渊博,待人亲和。在写作过程中创建了论文交流群,并发了模板让我们参考,可以这么说,没有成老师的悉心指导,我就没办法完成论文的写作。倒是不仅教给我们提出问题,分析问题和发现问题的能力,也教导了我们对待工作和生活的台独以及做人的道理,使我受益终生。在此,我要向成老师致以崇高的敬意和衷心的感谢!
不负遇见,不谈亏欠。在我四年大学生涯中,每个人都是不可或缺的一部分,感谢那些不曾说后悔的时光,谢谢你和什么都不懂的我一起成长,感谢陪伴。感谢大学四年里母校对我的悉心栽培,感谢专业老师的倾囊相授,使我受益终生。也感谢陪伴我四年的同窗们,和你们生活的这四年,我尝试了很多新鲜事物,谢谢你们陪伴我,包容我。这段时光将是我人生最美好的回忆。
最后,借此机会,特别感谢含辛茹苦养育我的父母,这么多年的求学之路,都是他们在背后默默地支持,他们的无私奉献和关爱是我前进道路上的不懈动力,祝愿我的家人身体健康,和睦美满。
杨绛先生说过读书不是为了文凭和发财,而是成为一个有温度,懂情趣,会思考的人,我坚信读书是为了就算跌入繁琐,洗净铅华,同样的工作却有不同的心境,同样的家庭却有不同的情调,路漫漫其修远兮,吾将上下而求索,也希望我在往后的生活工作学习中,能够不忘初心一直勇敢的走下去。
2020年的春节疫情虐神州大地,我在家里完成论文攥写,感谢强大的祖国,感谢这次疫情中“最美逆行者”美丽的白衣天使,保护我与家人的安全,才能让我能够安心在家完成论文,愿历经坎坷,山河无恙,人间皆可安。凌冬已过,皓月常明,疫情终时,这人间仍然星河滚烫,水木清华,江山如故。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐