当前位置:文档之家› 毕业设计论文——最终版

毕业设计论文——最终版

毕业设计论文作者学号系部专业题目指导教师评阅教师完成时间:毕业设计(论文)中文摘要毕业设计(论文)外文摘要目录1 绪论 (1)1.1J AVA语言的特点 (1)1.2开发工具E CLIPSE介绍 (2)1.3开发工具JDK介绍 (2)1.4应用环境 (3)2 系统需求分析 (3)2.1需求分析 (3)2.2可行性分析 (3)3 系统概要设计 (4)3.1游戏流程图 (4)3.2设计目标 (5)3.3系统功能模块 (5)3.4系统数据结构设计 (7)4 系统详细设计 (10)4.1程序设计 (10)4.2贪吃蛇游戏各功能界面截图 (13)5 系统测试 (16)5.1测试的意义 (16)5.2测试过程 (16)5.3测试结果 (17)结论 (18)致谢 (19)参考文献 (19)1 绪论贪吃蛇是世界知名的益智类小游戏,选择这个题目一方面是为了将我们自己的所学知识加以运用;另一方面,我希望通过自己的所学知识把它剖析开来,通过自己的动手实践,真正的了解它的本质和精髓。

希望通过这次实践,能从中提高自己的编程能力。

并从中学会从零开始分析设计程序,达到学以致用,活学活用的目的。

另外,通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。

本游戏的开发语言为Java,开发工具选用Eclipse。

Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。

这里采用Java作为开发语言主要是基于Java的面向对象和可移植性。

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

1.1 Java语言的特点1.1.1 简单性Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。

Java 实现了自动的垃圾收集,简化了内存管理的工作。

1.1.2 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。

Java的数据类型与机器无关。

1.1.3 安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。

它提供了安全管理器,防止程序的非法访问。

1.1.4 面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。

1.1.5 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。

1.1.6 健壮性Java致力于检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。

Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。

1.2 开发工具Eclipse介绍Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。

Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。

尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++等编程语言的插件已经可用,或预计会推出。

Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统等。

1.3 开发工具JDK介绍Sun Microsystems公司在推出Java语言的同时,推出了一套开发工具JDK。

Sun提供的基于字符模式的Java开发工具包JDK:Java开发工具(JDK)是许多Java专家最初使用的开发环境。

Java是平台无关的语言是因为用Java写的应用程序不用修改就可在不同的软硬件平台上运行。

Java源程序编写借助于记事本编辑工具。

所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。

JDK 由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。

其核心Java API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。

JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一堆Java工具和Java基础的类库。

不论什么Java应用服务器实质都是内置了某个版本的JDK。

因此掌握JDK是学好Java的第一步。

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。

而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。

1.4 应用环境(1) 操作系统: Windows 7,Windows xp等。

(2) 应用软件:jdk7.1,eclipse。

2 系统需求分析2.1 需求分析本系统主要是完成贪吃蛇游戏的基本操作,用户可以自己练习和娱乐。

本系统需要满足以下几点要求:(1) 利用方向键来改变蛇的运行方向。

(2) 空格键或回车键暂停或继续游戏,并在随机的地方产生食物,PgUp和PgDn控制速度快慢。

(3) 吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

2.2 可行性分析贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏,也比较符合现代人用来打发闲暇时光的方式。

贪吃蛇的核心算法是如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。

而在吃到食物的时候,则只需把食物入队即可。

实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。

本次设计主要运用java语言来完成。

Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用Java写的应用程序不用修改就可在不同的软硬件平台上运行。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。

如果没有安全保证,用户从网络下载程序执行就非常危险。

Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。

3 系统概要设计3.1 游戏流程图图3-1 游戏流程图3.2 游戏整体结构图图3-2 游戏整体结构图3.3 设计目标本系统是针对贪吃蛇小游戏的Java程序,利用方向键来改变蛇的运行方向,空格键暂停或继续游戏,并在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常运行。

3.4 系统功能模块1、本系统共包括10个类文件。

java源文件及其功能如表所示。

表3-1 java源文件及其功能序号文件名主要功能1 MainFrame 该文件为程序入口,含有main方法。

实现菜单控制运行等总体要求,实现方向键控制2 GameOptionPanel蛇的方向,空格键控制游戏暂停或继续等。

3 SnakeListener 蛇的监听器4 GameListener 游戏监听器5 Food 该文件实现组成蛇身的单位-食物。

6 Ground 该文件实现障碍物-石头7 Snake 该文件实现蛇类8 Global 该文件为工具类,实现一些配置9 Controller 控制器,控制蛇、食物、石头10 GamePanel 游戏的显示界面设置2、主要类之间的对应关系如下:图3-3 主要类之间的关系3、因为蛇不能直接操作显示面板(GamePanel),所以定义一个监视器SnakeListener,里面有两个方法:snakeMoved()和snakeEatFood()。

图3-4 通过事件监听建立联系3.5 系统数据结构设计3.5.1 蛇、石头、食物的表示用一个大的表格来表示显示区域,里面的格子就是组成蛇的基本单位,一个格子可以代表一个食物,也可以代表一个石头,几块连在一起的石头就可以代表一条蛇。

使用坐标来区分这些格子。

图3-5 蛇、石头、食物的表示这里用一个集合来存储这些坐标,并且要求能够区分出蛇头和蛇尾。

3.5.2 蛇的移动蛇向前移动一步,可以看作是蛇头前面增加了一个节点,蛇的尾巴上少了一个节点(即去尾,加头)图3-6 蛇的移动3.5.3 存储蛇身的数据结构由于要区分蛇头和蛇尾,因此这个数据结构必须是有序的。

另一方面,我们需要经常的访问第一个和最后一个节点,所以LinkedList最合适。

因为它有getFirst(),getLast(),和removeLast()方法。

图3-7 根据原蛇头和方向计算新蛇头的坐标3.5.4 蛇的移动方向蛇下一步移动到哪里,是由方向来控制的。

根据原蛇头的坐标和方向来确定新蛇头的坐标,因此在这里用int型常量来表示蛇的移动方向。

在原坐标的基础上,根据蛇头的运动方向来确定新蛇头的坐标,比如向上移动就是y-1。

在Snake中增加蛇的方向向量:public static final int UP = 1;上public static final int DOWN = -1;下public static final int LEFT = 2;左public static final int RIGHT = -2;右3.5.5 如何显示蛇身显示蛇身,其实就是填充,用颜色填充格子。

需要4个参数,像素坐标x,像素坐标y,格子宽度,格子高度。

像素坐标就是矩形左上角的坐标图3-8 格子坐标和像素坐标3.5.6 蛇身的移动方向(1)相反方向和上一次移动的方向相反的方向称为相反方向,这种输入应该忽略。

这样可以防止蛇从自己的身体中穿过。

(2)无效方向在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入了多个非相反方向,只有最后一个是有效方向,其他的都是无效方向。

相关主题