版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 论文编号:德州科技职业学院毕 业 论 文题 目 姓 名:_ 学 号:_ 所在院系:_所学专业:_指导教师:_完成时间:_ Java贪吃蛇游戏设计目录 TOC o 1-3 h z u HYPERLINK l _Toc288731037 Java贪吃蛇游戏设计 PAGEREF _Toc288731037 h 4 HYPERLINK l _Toc288731038 目录 PAGEREF _Toc288731038 h 4 HYPERLINK l _Toc288731039 前言 PAGEREF _Toc288731039 h 6 HYPERLINK l _Toc288731040 1.Java语言
2、的概述及开发工具 PAGEREF _Toc288731040 h 8 HYPERLINK l _Toc288731041 1.1Java语言特点 PAGEREF _Toc288731041 h 8 HYPERLINK l _Toc288731042 1.1.1 平台无关性 PAGEREF _Toc288731042 h 8 HYPERLINK l _Toc288731043 1.1.2安全性 PAGEREF _Toc288731043 h 8 HYPERLINK l _Toc288731043 1.1.3面向对象 PAGEREF _Toc288731043 h 8 HYPERLINK l _T
3、oc288731043 1.1.4分布式 PAGEREF _Toc288731043 h 8 HYPERLINK l _Toc288731043 1.1.5健壮性 PAGEREF _Toc288731043 h 8 HYPERLINK l _Toc288731044 1.2 J2ME介绍 PAGEREF _Toc288731044 h 9 HYPERLINK l _Toc288731045 1.3关于ECLIPSE PAGEREF _Toc288731045 h 10 HYPERLINK l _Toc288731046 1.4 WTK介绍 PAGEREF _Toc288731046 h 11
4、HYPERLINK l _Toc288731047 2.需求分析 PAGEREF _Toc288731047 h 11 HYPERLINK l _Toc288731048 2.1游戏的介绍 PAGEREF _Toc288731048 h 11 HYPERLINK l _Toc288731049 2.2游戏开发的可行性 PAGEREF _Toc288731049 h 12 HYPERLINK l _Toc288731050 2.3设计目的 PAGEREF _Toc288731050 h 12 HYPERLINK l _Toc288731051 2.4游戏需求 PAGEREF _Toc288731
5、051 h 12 HYPERLINK l _Toc288731052 2.4.1游戏界面需求 PAGEREF _Toc288731052 h 12 HYPERLINK l _Toc288731053 2.4.2游戏形状需求 PAGEREF _Toc288731053 h 12 HYPERLINK l _Toc288731054 2.4.3键盘事件处理 PAGEREF _Toc288731054 h 13 HYPERLINK l _Toc288731055 2.4.4显示需求 PAGEREF _Toc288731055 h 13 HYPERLINK l _Toc288731056 2.4.5接口
6、控制 PAGEREF _Toc288731056 h 13 HYPERLINK l _Toc288731057 2.4.6环境介绍 PAGEREF _Toc288731057 h 13 HYPERLINK l _Toc288731058 3.功能设计 PAGEREF _Toc288731058 h 14 HYPERLINK l _Toc288731059 3.1 游戏的流程图 PAGEREF _Toc288731059 h 14 HYPERLINK l _Toc288731060 3.详细设计 PAGEREF _Toc288731060 h 15 HYPERLINK l _Toc2887310
7、61 3.1游戏主界面的开发 PAGEREF _Toc288731061 h 15 HYPERLINK l _Toc288731062 3.2 绘制蛇身 PAGEREF _Toc288731062 h 15 HYPERLINK l _Toc288731063 3.3创建初始“蛇”及“蛇”的移动 PAGEREF _Toc288731063 h 16 HYPERLINK l _Toc288731064 3.4 吃掉食物,蛇身增长 PAGEREF _Toc288731064 h 16 HYPERLINK l _Toc288731065 3.4随机产生食物 PAGEREF _Toc288731065
8、h 17 HYPERLINK l _Toc288731066 3.5键盘事件处理 PAGEREF _Toc288731066 h 18 HYPERLINK l _Toc288731067 3.6 判断游戏结束 PAGEREF _Toc288731067 h 19 HYPERLINK l _Toc288731068 4游戏测试与发布 PAGEREF _Toc288731068 h 21 HYPERLINK l _Toc288731069 4.1游戏运行的效果图 PAGEREF _Toc288731069 h 21 HYPERLINK l _Toc288731070 4.2 测试结果 PAGERE
9、F _Toc288731070 h 22 HYPERLINK l _Toc288731071 5.自我评价和总结 PAGEREF _Toc288731071 h 22 HYPERLINK l _Toc288731072 5.1遇到的问题及解决办法 PAGEREF _Toc288731072 h 22 HYPERLINK l _Toc288731073 5.2 总结 PAGEREF _Toc288731073 h 23 HYPERLINK l _Toc288731074 6参考资料 PAGEREF _Toc288731074 h 23 HYPERLINK l _Toc288731075 7.附加
10、源代码 PAGEREF _Toc288731075 h 23前言随着3G的到来,让人们的目光聚集到一个新兴的互联网终端手机上。手机的随身性让玩家有了随时随地完游戏的可能。据我调查行业分析师也对这一行业持普遍的乐观态度。yramid Researcher 的最新报告显示,手机游戏市场正在稳步发展。用户数从2008年的1.83亿到现在将增长到3亿。据报告分析,2014年,市场 规模有望达到180亿美元。 手机游戏的发展有以下推动因素更好更快的无限网络以及易于操作的手机终端改善了用户的体验;2. 触摸屏,3D动画处理能力以及在线互动能力让游戏开发商把游戏做的更好;3.苹果应用商店模式刺激作用。J2M
11、E是一种针对移动电话和PDA这样的小型设备的Java语言。大部分的手机厂商都迫切希望Java手机推广应用。上千万的手机已经到了消费者手中。它已经极大的提高了移动电话支持游戏的能力。它有着比SMS或WAP 更好控制的界面。允许使用子图形动画。并且可以通过无限网络连接到远程服务器。支持Java的手机的普及,所以目前它成为最好的移动游戏开发环境。J2ME不是手机上配置的唯一解释语言,但是它是许多厂商支持的行业标准。一些专用的解释语言也在某些区域有上着上佳的表现。如北美的Qualcomm的BREM和一些韩国运营上支持的名为GVM的标准。基于以上分析,Java手机游戏的开发具有重要的意义。1.Java语
12、言的概述及开发工具1.1Java语言特点1.1.1 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。1.1.2安全性Java的编程类似C+,但舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。JAVA手机网1.1.3面向对象 Java吸收了C+面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。 1.1.4分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和
13、接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。 1.1.5健壮性 Java致力于检查程序在编译和运行时的错误,并自动回收内存,减 少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。1.2 J2ME介绍 虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面还是非常适合用在嵌入式系统之中。Java平台演进到Java2后,Java平台分别针对不同领域的需求被分成四个版本,亦即J2EE、J2SE、J2ME以及JavaCard中J2ME定位在消费性电子产品的
14、应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来Java平台发展的重点项目。J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。支持Java的设备就是任何运行Java虚拟机器的计算机。Motorola、Nokia等生产厂商都生产支持Java的设备。JAVJ2ME平台是由配置(Configuration)和简表(Profile)构成的。配置是提供给最大范围设备
15、使用的最小类库集合,在配置中同时包含Java虚拟机。简表是针对一系列设备提供的开发包集合。在J2ME中还有一个重要的概念是可选包(Optional Package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能J2ME中制定了JSR82(Bluetooth API)提供了对蓝牙的支持。目前,J2ME中有两个最主要的配置,分别是Connected Limited Devices Configuration(CLDC)和Connected Devices Configuration(CDC)。net1.3关于ECLIPSE Eclipse 是一个开放源代码的、基于 Java 的
16、可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对
17、于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。1.4 WTK介绍WTK
18、 的全称是Sun J2ME Wireless Toolkit Sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。使用其中的工具可以开发与 Java Technology for the Wireless Industry (JTWI, JSR 185) 规范兼容的设备上运行的j2me 应用程序。WTK是用来开发MIDP的,为了让MIDlet可以顺利编译和执行,WTK必须具有CLDC和MIDP的类库,WTK可以帮助我们省去额外安装调试这些类库的时间2.需求分析2.1游戏的介绍游戏的名称叫“贪吃蛇”,节:一条蛇可以看成有许多正方形的“小格子”拼凑成,我把它称作节
19、。节是蛇身上最小的单位。 段:当许多节连成一条直线,我称它为段。贪吃蛇只有一段,如果它拐弯就变成两段。 链表:用来保存每一段的状态,链表的元素单位是段。且链表的最后一个元素表示蛇的头部段。 坐标系:MIDP中的坐标以左上角那点为(0,0),向右则x递增,向下则y递增。2.2游戏开发的可行性游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件的水平的提高。游戏开发新技术层出不穷,经典游戏比比皆是,游戏这个名称一直存在于每个人的日常生活中。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色.而从技术方面来看,现在的java技术也融入了手机中。这些都为开发的这款贪吃蛇游戏提供了条件。2
20、.3设计目的 综合运用在校所学的知识和技能,设计开发贪吃蛇游戏,使自己熟悉应用系统的开发的过程,培养独立思考的能力,校验学习效果和动手能力,提高工程实践能力。2.4游戏需求给出一条小蛇和随机出现一个食物,当小蛇吃到食物时就加分。2.4.1游戏界面需求良好的用户界面,有分数显示和暂停。2.4.2游戏形状需求良好的方块形状设计,绘制小蛇和食物,小蛇由几个方块组成,食物由一个方块组成。2.4.3键盘事件处理小蛇可以通过键盘方向键(上,下,左,右)进行方向的移动。2.4.4显示需求当小蛇吃掉几个食物后会变长,平且吃完食物时食物会消失,并立即产生一个1个新的事物。2.4.5接口控制本软件通过键盘进行操作
21、,在windows操作系统下,利用键盘的上下左右键进行操作,要使用键盘的接口事件。2.4.6环境介绍操作系统:Microsoft Windows XP程序语言:Java 2开 发 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME Wireless Tool Kit 2.2IDE: Eclipse 3.013.功能设计3.1 游戏的流程图进入游戏界面点击开始按钮,游戏开始,蛇随机产生 / _|_| O| / / _/ _|_/ _ | | / / / / / / / / / / _ / / _- -_ | | ( ( _- _-_ -_ _/
22、 | -_- _- -_ -_- / -_ _- -_ _- -_- -_-操作:右移、下移、左移、上移 游戏中途欲中断,稍候进行游戏没有吃到食物,且碰到边界单击退出游戏单击暂停游戏单击开始游戏,游戏恢复正常。3.详细设计3.1游戏主界面的开发屏幕的背景用白色,由于屏幕高比宽长,所以取以宽为边长的矩形区域作为游戏区域,下面的部分作为分数、信息区域。图一(游戏的主界面)3.2 绘制蛇身protected void paint(Graphics g) /清屏 g.setColor(0, 255, 0); g.fillRect(0,0,width,height); g.setColor(0); /绘
23、制蛇身 for(int i = 0;i 0;i-) snakei0 = snakei - 10; snakei1 = snakei - 11; 3.4 吃掉食物,蛇身增长当小蛇吃掉食物后,会增长,部分代码: /* * 吃掉食物,自身增长 */ private void eatFood() /判别蛇头是否和食物重叠 if(snake00 = foodX & snake01 = foodY) snakeNum+; generateFood(); 3.4随机产生食物部分代码:* 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 */ private void generateFood(
24、) 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 snakeNum;i+) if(foodX = snakei0 & snakei1 = foodY) b = false; break; if(b)
25、break; 3.5键盘事件处理可以通过键盘控制蛇的移动方向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 = DIRECTION_DOWN; break; case LEFT: if(directi
26、on != DIRECTION_RIGHT) direction = DIRECTION_LEFT; break; case RIGHT: if(direction != DIRECTION_LEFT) direction = DIRECTION_RIGHT; break; case FIRE: /暂停和继续 isPaused = !isPaused; break; 3.6 判断游戏结束只有一种游戏结束的方式,即蛇头碰到蛇身游戏结束。 参考代码: private boolean isGameOver() /边界判别 if(snake00 (width - SNAKEWIDTH) | snake
27、01 (height - SNAKEWIDTH) return true; /碰到自身 for(int i = 4;i snakeNum;i+) if(snake00 = snakei0 & snake01 = snakei1) return true; return false; 4游戏测试与发布4.1游戏运行的效果图图一表示小蛇正在移动图二表示,随机产生一个食物图三表示小蛇吃掉食物增长后继续移动4.2 测试结果程序运行良好,未出现bug.5.自我评价和总结 5.1遇到的问题及解决办法 先是图形化界面的设计,一直想不出好的办法,最后翻看了教程才解决了这个问题,后来在蛇的移动上也遇到了些问题。
28、上网查了一下,才知道蛇身是由一连串的基本图形组成的,每过1秒检查前面是什么,如果是空的,就把图画成普通身子的样子。再在前方在画一个头,并将其左标记入数组,数组要足够大,在把尾巴画成背景色,如果前面是食物,尾巴就不删除。这个里面的难点就是数组里面的操作和坐标的表示。把头添在最后一个元素,把第一个元素提起。5.2 总结 这款游戏的优点,就是简单的画面和容易的操作很容易使玩家就上手,适合不通年龄段的玩家娱乐。当然这款游戏也存在有不足的地方,有些功能还是没有实现。通过这次设计过程中,我查阅了大量的资料,对java有了更深刻的认识,通过这次的设计,更提高了我在程序设计和调试方面的技巧,更重要的是我认识了
29、自己的不足,在编程方面我还需要努力学习来充实自己,来获取更大的收获。6参考资料【1】Java2实用教程(第三版) 清华大学出版社。【2】java编程思想(第四版) 机械工业出版社。【3】J2ME 游戏开发实例大全 清华大学出版社出版。7.附加源代码import java.util.*;import javax.microedition.lcdui.*;/* * 贪吃蛇游戏 */public class SnakeCanvas extends Canvas implements Runnable /*存储贪吃蛇节点坐标,其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标*/ int sn
30、ake = new int2002; /*已经使用的节点数量*/ int snakeNum; /*贪吃蛇运动方向,0代表向上,1代表向下,2代表向左,3代表向右*/ int direction; /*移动方向*/ /*向上*/ private final int DIRECTION_UP = 0; /*向下*/ private final int DIRECTION_DOWN = 1; /*向左*/ private final int DIRECTION_LEFT = 2; /*向右*/ private final int DIRECTION_RIGHT = 3; /*游戏区域宽度*/ int
31、 width; /*游戏区域高度*/ int height; /*蛇身单元宽度*/ private final byte SNAKEWIDTH = 4; /*是否处于暂停状态,true代表暂停*/ boolean isPaused = false; /*是否处于运行状态,true代表运行*/ boolean isRun = true; /*时间间隔*/ private final int SLEEP_TIME = 300; /*食物的X坐标*/ int foodX; /*食物的Y坐标*/ int foodY; /*食物的闪烁控制*/ boolean b = true; /*Random对象*/
32、 Random random = new Random(); public SnakeCanvas() /初始化 init(); width = this.getWidth(); height = this.getHeight(); /启动线程 new Thread(this).start(); /* * 初始化开始数据 */ private void init() /初始化节点数量 snakeNum = 7; /初始化节点数据 for(int i = 0;i snakeNum;i+) snakei0 = 100 - SNAKEWIDTH * i; snakei1 = 40; /初始化移动方向
33、 direction = DIRECTION_RIGHT; /初始化食物坐标 foodX = 100; foodY = 100; 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; /第一个单元格移动 switch(direction) case DIRECTION_UP: snake01 =
34、 snake01 - SNAKEWIDTH; break; case DIRECTION_DOWN: snake01 = snake01 + SNAKEWIDTH; break; case DIRECTION_LEFT: snake00 = snake00 - SNAKEWIDTH; break; case DIRECTION_RIGHT: snake00 = snake00 + SNAKEWIDTH; break; /* * 吃掉食物,自身增长 */ private void eatFood() /判别蛇头是否和食物重叠 if(snake00 = foodX & snake01 = food
35、Y) snakeNum+; generateFood(); /* * 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 */ private void generateFood() 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人房产抵押权抵押权转让合同3篇
- 2025年度个人贷款担保转让合同4篇
- 2025版住宅室内精装修与装饰工程施工合同5篇
- 人类的起源和发展课件2
- 出租车行业环保措施考核试卷
- 团队建设力量培养项目计划书考核试卷
- 印刷业科技创新与成果转化考核试卷
- 二零二五年度艺术品交易居间代理合同样本3篇
- 2025年创业创新贷款协议
- 2025年合作知名作者的高需求小说电子书协议
- 广东省佛山市2025届高三高中教学质量检测 (一)化学试题(含答案)
- 人教版【初中数学】知识点总结-全面+九年级上册数学全册教案
- 2024年全国体育单招英语考卷和答案
- 食品安全管理制度可打印【7】
- 2024年九年级语文中考名著阅读《儒林外史》考前练附答案
- 抖音丽人行业短视频直播项目运营策划方案
- 2024年江苏扬州市邗城文化旅游发展有限公司招聘笔试参考题库含答案解析
- 小学六年级数学100道题解分数方程
- 社区获得性肺炎护理查房内科
- 浅谈提高中学生历史学习兴趣的策略
- 项目管理实施规划-无锡万象城
评论
0/150
提交评论