毕业设计(论文)-基于java的贪吃蛇游戏开发.doc

上传人:来看看 文档编号:3283086 上传时间:2019-08-07 格式:DOC 页数:27 大小:494.02KB
返回 下载 相关 举报
毕业设计(论文)-基于java的贪吃蛇游戏开发.doc_第1页
第1页 / 共27页
毕业设计(论文)-基于java的贪吃蛇游戏开发.doc_第2页
第2页 / 共27页
毕业设计(论文)-基于java的贪吃蛇游戏开发.doc_第3页
第3页 / 共27页
毕业设计(论文)-基于java的贪吃蛇游戏开发.doc_第4页
第4页 / 共27页
毕业设计(论文)-基于java的贪吃蛇游戏开发.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《毕业设计(论文)-基于java的贪吃蛇游戏开发.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于java的贪吃蛇游戏开发.doc(27页珍藏版)》请在三一文库上搜索。

1、毕毕 业业 设设 计计 报报 告告 课题: 基于 java 的贪吃蛇游戏开发 系部: 班级: 学号: 学生: 指导教师: 装订交卷日期:2011 年 3 月 20 日 毕业设计成绩评定表 装订顺序: (1)封面(2)毕业设计成绩评定记录(3)毕业设计任务书(4)毕业 设计报告标题、中文摘要及关键词(5)正文(6)附录(7)参考文献 毕业设计成绩评定表:注:未安排答辩者平时成绩与评阅成绩分别占总评成绩的 40%、60%; 参加答辩者平时成绩占、卷面评阅成绩、答辩成绩分别占总评成绩 40%、20% 和 40%。总评成绩记优秀、良好、中等、及格、不及格五等级计分。 教务处制 指导教师评语(包含学生在

2、毕业实习期间的表现): 成绩(平时成绩): 指导教师签名: 年 月 日 评阅教师评语: 成绩(评阅成绩): 评阅教师签名: 年 月 日 答辩情况记录:(不安排答辩的学生此表不填) 答辩成绩: 答辩委员会主任(或答辩教师小组组长)签名: 年 月 日 总评成绩: 注:毕业设计任务书包括设计课题、设计目的、设计要求、毕业设计报告要求、设计进度计划、 毕业设计答辨需提交的材料等项目。 Java 贪吃蛇游戏设计贪吃蛇游戏设计 目录目录 JAVA 贪吃蛇游戏设计贪吃蛇游戏设计4 目录目录.4 前言前言.6 1.JAVA 语言的概述及开发工具语言的概述及开发工具 8 1.1Java 语言特点语言特点 .8

3、1.1.1 平台无关性.8 1.1.2 安全性8 1.1.3 面向对象8 1.1.4 分布式8 1.1.5 健壮性 8 1.2 J2ME 介绍介绍9 1.3 关于关于 ECLIPSE .10 1.4 WTK 介绍介绍.11 2.需求分析需求分析.11 2.1 游戏的介绍游戏的介绍 .11 2.2 游戏开发的可行性游戏开发的可行性 .12 2.3 设计目的设计目的 .12 2.4 游戏需求游戏需求 .12 2.4.1 游戏界面需求12 2.4.2 游戏形状需求12 2.4.3 键盘事件处理13 2.4.4 显示需求13 2.4.5 接口控制13 2.4.6 环境介绍13 3.功能设计功能设计.1

4、4 3.1 游戏的流程图游戏的流程图 14 3.详细设计详细设计.15 3.1 游戏主界面的开发游戏主界面的开发 .15 3.2 绘制蛇身绘制蛇身 15 3.3 创建初始创建初始“蛇蛇”及及“蛇蛇”的移动的移动 .16 3.4 吃掉食物,蛇身增长吃掉食物,蛇身增长 16 3.4 随机产生食物随机产生食物 .17 3.5 键盘事件处理键盘事件处理 .18 3.6 判断游戏结束判断游戏结束 19 4 游戏测试与发布游戏测试与发布21 4.1 游戏运行的效果图游戏运行的效果图 .21 4.2 测试结果测试结果 22 5.自我评价和总结自我评价和总结22 5.1 遇到的问题及解决办法遇到的问题及解决办

5、法 .22 5.2 总结总结 23 6参考资料参考资料23 7.附加源代码附加源代码.23 前言前言 随着 3G 的到来,让人们的目光聚集到一个新兴的互联网终端 手机上。手机的随身性让玩家有了随时随地完游戏的可能。 据我调查行业分析师也对这一行业持普遍的乐观态度。yramid Researcher 的最新报告显示,手机游戏市场正在稳步发展。用户 数从 2008 年的 1.83 亿到现在将增长到 3 亿。据报告分析,2014 年,市场 规模有望达到 180 亿美元。 手机游戏的发展有以下推动因素 1 更好更快的无限网络以及易于操作的手机终端改善了用户 的体验; 2. 触摸屏,3D 动画处理能力以

6、及在线互动能力让游戏开发 商把游戏做的更好; 3.苹果应用商店模式刺激作用。 J2ME 是一种针对移动电话和 PDA 这样的小型设备的 Java 语言。 大部分的手机厂商都迫切希望 Java 手机推广应用。上千万的手机已 经到了消费者手中。它已经极大的提高了移动电话支持游戏的能力。 它有着比 SMS 或 WAP 更好控制的界面。允许使用子图形动画。并 且可以通过无限网络连接到远程服务器。支持 Java 的手机的普及, 所以目前它成为最好的移动游戏开发环境。J2ME 不是手机上配置的 唯一解释语言,但是它是许多厂商支持的行业标准。一些专用的解 释语言也在某些区域有上着上佳的表现。如北美的 Qua

7、lcomm 的 BREM 和一些韩国运营上支持的名为 GVM 的标准。 基于以上分析,Java 手机游戏的开发具有重要的意义。 1.Java 语言的概述及开发工具语言的概述及开发工具 1.1Java 语言特点语言特点 1.1.1 平台无关性平台无关性 Java 引进虚拟机原理,并运行于虚拟机,实现不同平台之间的 Java 接口。Java 的数据类型与机器无关。 1.1.2 安全性安全性 Java 的编程类似 C+,但舍弃了 C+的指针对存储器地址的直接操 作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指 针入侵系统。它提供了安全管理器,防止程序的非法访问。 JAVA 手机网 1.1.

8、3 面向对象面向对象 Java 吸收了 C+面向对象的概念,将数据封装于类中,实现了程 序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复 利用。 1.1.4 分布式分布式 Java 建立在 TCP/IP 网络平台上,提供了用 HTTP 和 FTP 协议传送 和接收信息的库函数,使用其相关技术可以十分方便的构建分布式 应用系统。 1.1.5 健壮性健壮性 Java 致力于检查程序在编译和运行时的错误,并自动回收内存, 减 少了内存出错的可能性。Java 取消了 C 语言的结构、指针、 #define 语句、多重继承、goto 语句、操作符、重载等不易被掌握的 特性,提供垃圾收集器自动回

9、收不用的内存空间。 1.2 J2ME 介绍介绍 虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面 还是非常适合用在嵌入式系统之中。Java 平台演进到 Java2 后, Java 平台分别针对不同领域的需求被分成四个版本,亦即 J2EE、J2SE、J2ME 以及 JavaCard 中 J2ME 定位在消费性电子 产品的应用上。这个版本针对资源有限的电子消费产品的需求精简 核心类库,并提供了模块化的架构让不同类型产品能够随时增加支 持的能力。这个版本的应用层面相当广泛,会是未来 Java 平台发 展的重点项目。 J2ME 在 1999 年的 JavaOne 开发人员大会上初次亮相,它

10、的目标 是面向智能无线设备和小型计算机设备的开发人员。J2ME 的一个 关键优点是,J2ME 与所有支持 Java 的设备都是兼容的。支持 Java 的设备就是任何运行 Java 虚拟机器的计算机。 Motorola、Nokia 等生产厂商都生产支持 Java 的设备。 JAVJ2ME 平台是由配置(Configuration)和简表(Profile)构成 的。配置是提供给最大范围设备使用的最小类库集合,在配置中同 时包含 Java 虚拟机。简表是针对一系列设备提供的开发包集合。 在 J2ME 中还有一个重要的概念是可选包(Optional Package), 它是针对特定设备提供的类库,比如

11、某些设备是支持蓝牙的,针对 此功能 J2ME 中制定了 JSR82(Bluetooth API)提供了对蓝牙的 支持。 目前,J2ME 中有两个最主要的配置,分别是 Connected Limited Devices Configuration(CLDC)和 Connected Devices Configuration(CDC)。 net 1.3 关于关于 ECLIPSE Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。 就其本身而言,它只是一个框架和一组服务,用于通过插件组件构 建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(J

12、ava Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝 集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有 工具开发人员都具有同等的发挥场所。 这种平等和一致性并不仅限于 Java 开发

13、工具。尽管 Eclipse 是使 用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持 诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预 计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程 序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、 基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和 一组服务,用于通过插件组件构建开发环境。 1.4 WTK 介绍介绍 WTK 的全称是 Sun J2ME Wireless Toolkit Sun 的无线开发 工具包。这一工具包的设计目的是为了帮助开发人员简化

14、 j2me 的开 发过程。使用其中的工具可以开发与 Java Technology for the Wireless Industry (JTWI, JSR 185) 规范兼容的设备上运行的 j2me 应 用程序。 WTK 是用来开发 MIDP 的,为了让 MIDlet 可以顺利 编译和执行, WTK 必须具有 CLDC 和 MIDP 的类库,WTK 可以 帮助我们省去额外安装调试这些类库的时间 2.需求分析需求分析 2.1 游戏的介绍游戏的介绍 游戏的名称叫“贪吃蛇” ,节:一条蛇可以看成有许多正方 形的“小格子”拼凑成,我把它称作节。节是蛇身上最小的单位。 段:当许多节连成一条直线,我称它

15、为段。贪吃蛇只有一 段,如果它拐弯就变成两段。 链表:用来保存每一段的状态,链表的元素单位是段。且 链表的最后一个元素表示蛇的头部段。 坐标系:MIDP 中的坐标以左上角那点为(0,0),向右则 x 递增,向下则 y 递增。 2.2 游戏开发的可行性游戏开发的可行性 游戏开发至今已经有 30 多年,在这个短暂的时期里,随着 硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆 是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏 对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技 术方面来看,现在的 java 技术也融入了手机中。这些都为开发的 这款贪吃蛇游戏提供了条件。 2.

16、3 设计目的设计目的 综合运用在校所学的知识和技能,设计开发贪吃蛇游戏,使自 己熟悉应用系统的开发的过程,培养独立思考的能力,校验学习 效果和动手能力,提高工程实践能力。 2.4 游戏需求游戏需求 给出一条小蛇和随机出现一个食物,当小蛇吃到食物时就加 分。 2.4.1 游戏界面需求游戏界面需求 良好的用户界面,有分数显示和暂停。 2.4.2 游戏形状需求游戏形状需求 良好的方块形状设计,绘制小蛇和食物,小蛇由几个方块组成, 食物由一个方块组成。 2.4.3 键盘事件处理键盘事件处理 小蛇可以通过键盘方向键(上,下,左,右)进行方向的移动。 2.4.4 显示需求显示需求 当小蛇吃掉几个食物后会变

17、长,平且吃完食物时食物会消失, 并立即产生一个 1 个新的事物。 2.4.5 接口控制接口控制 本软件通过键盘进行操作,在 windows 操作系统下,利用键 盘的上下左右键进行操作,要使用键盘的接口事件。 2.4.6 环境介绍环境介绍 操作系统:Microsoft Windows XP 程序语言:Java 2 开 发 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2 IDE: Eclipse 3.01 3.功能设计功能设计 3.1 游戏的流程图游戏的流程图 进入游戏界面 点击开始按钮,游 戏开始

18、,蛇随机产 生 / _|_| O| / / _/ _|_/ _ | | / / / / / / / / / / _-_ / / _- -_ | | ( ( _- _-_ -_ _/ | -_- _- -_ -_- / -_ _- -_ _- -_- -_- 操作: 右移、 下移、 左移、 上移 3.详细设计详细设计 3.1 游戏主界面的开发游戏主界面的开发 屏幕的背景用白色,由于屏幕高比宽长,所以取以宽为边长 的矩形区域作为游戏区域,下面的部分作为分数、信息区域。 没有吃到食物, 且碰到边界 游戏中途欲中 断,稍候进行 游戏 单击退出游戏单击暂停游戏 单击开始游戏,游 戏恢复正常。 图一(游戏

19、的主界面) 3.2 绘制蛇身绘制蛇身 protected void paint(Graphics g) /清屏 g.setColor(0, 255, 0); g.fillRect(0,0,width,height); g.setColor(0); /绘制蛇身 for(int i = 0;i 0;i-) snakei0 = snakei - 10; snakei1 = snakei - 11; 3.4 吃掉食物,蛇身增长吃掉食物,蛇身增长 当小蛇吃掉食物后,会增长, 部分代码: /* * 吃掉食物,自身增长 */ private void eatFood() /判别蛇头是否和食物重叠 if(sn

20、ake00 = foodX generateFood(); 3.4 随机产生食物随机产生食物 部分代码: * 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 */ private void generateFood() while(true) foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKE

21、WIDTH; boolean b = true; for(int i = 0;i (width - SNAKEWIDTH) | snake01 (height - SNAKEWIDTH) return true; /碰到自身 for(int i = 4;i 0;i-) snakei0 = snakei - 10; snakei1 = snakei - 11; /第一个单元格移动 switch(direction) case DIRECTION_UP: snake01 = snake01 - SNAKEWIDTH; break; case DIRECTION_DOWN: snake01 = sn

22、ake01 + SNAKEWIDTH; break; case DIRECTION_LEFT: snake00 = snake00 - SNAKEWIDTH; break; case DIRECTION_RIGHT: snake00 = snake00 + SNAKEWIDTH; break; /* * 吃掉食物,自身增长 */ private void eatFood() /判别蛇头是否和食物重叠 if(snake00 = foodX generateFood(); /* * 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 */ private void generateFo

23、od() while(true) foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; boolean b = true; for(int i = 0;i (width - SNAKEWIDTH) | snake01 (height - SNAKEWIDTH) return true; /碰到自身

24、for(int i = 4;i snakeNum;i+) if(snake00 = snakei0 return false; /* * 事件处理 */ public void keyPressed(int keyCode) int action = this.getGameAction(keyCode); /改变方向 switch(action) case UP: if(direction != DIRECTION_DOWN) direction = DIRECTION_UP; break; case DOWN: if(direction != DIRECTION_UP) direction

25、 = DIRECTION_DOWN; break; case LEFT: if(direction != DIRECTION_RIGHT) direction = DIRECTION_LEFT; break; case RIGHT: if(direction != DIRECTION_LEFT) direction = DIRECTION_RIGHT; break; case FIRE: /暂停和继续 isPaused = !isPaused; break; /* * 线程方法 * 使用精确延时 */ public void run() try while (isRun) /开始时间 long start = System.currentTimeMillis(); if(!isPaused) /吃食物 eatFood(); /移动 move(direction); /结束游戏 if(isGameOver() break; /控制闪烁 b = !b; /重新绘制 repaint(); long end = System.currentTimeMillis(); /延时 if(end - start SLEEP_TIME) Thread.sleep(SLEEP_TIME - (end - start); catch(Exception e)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1