您好,欢迎访问三七文档
2008-2009学年第一学期《J2ME程序设计》游戏设计报告题目J2ME手机游戏——贪吃蛇学生姓名学号所在专业所在班级所在学院信息学院指导教师分数第一章、开发平台与技术概述1.1开发环境操作系统:MicrosoftWindowsXP程序语言:Java2开发包:SunJava(TM)WirelessToolkit2.5.2forCLDCIDE:Eclipse3.21.2WTK、ECLIPSE与JAM的介绍(1)WTK的全称是SunJ2MEWirelessToolkit——Sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。使用其中的工具可以开发与JavaTechnologyfortheWirelessIndustry(JTWI,JSR185)规范兼容的设备上运行的j2me应用程序。该工具箱包含了完整的生成工具、实用程序以及设备仿真器。到本文写作时为止可以获取有四个版本,分别是1.0.4,2.0,2.1和2.2。每个版本都包括英语,日语,简体中文,繁体中文4个语种包。WTK是Sun提供的一个开发工具包。目前各大手机厂商往往把WTK经过自身的简化与改装,推出适合自身产品,如SonyEricsson,NokiaDeveloper’ssuit等,都属于此种类型;而通过JBuilder,Eclipse等IDE,J2ME开发包工具可以被绑定在这些集成开发环境中,进一步提高开发效率。(2)Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。1.3JAVA语言介绍(1)面向对象面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。(2)平台无关性Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。(3)分布式分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。(4)可靠性和安全性Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。(5)多线程线程是操作系统的一种新概念,它又被称作轻量进程,是比传统进程更小的可并发执行的单位。第二章J2ME及其体系结构概述2.1J2ME简介现在JAVA-JAVA2Platform大致可分为J2SE、J2EE、J2ME三类。J2SE为JAVA-JAVA2Platform的标准版,通常在PC上使用的JAVA。J2EE是在J2SE的API上,扩展了给企业使用EJB与Servlet等主要使用在服务器上的功能。而J2ME则是面向家电和通信工具等微小设备。J2ME的目标是微小设备,这类设备有许多种类,在这些设备的J2ME当中,定义了CDC(ConnectedDeviceConfiguration),CLDC(ConnectedLimitedDeviceConfiguration)这两个Configuration。CDC是以能用在个人网关、下一代移动电话、PDA(个人数字助理)、家电设备、POS终端、车辆导航系统等上运行为前提设计出来的。CLDC,是以能使用在移动电话、PDA(个人数字助理)、家电设备、POS终端等上面为前提设计出来的。2.2J2ME体系结构配置和简表:配置定义了一个设计在一系列类似硬件上运行的Java平台的能力。J2me的目标是家电与嵌入式设备,这类设备有很多种类,对应这些设备的J2me当中,定义了CDC(连接设备配置)和CLDC(受限接设备配置)两个配置,配置所提供的类函数只有Java.lang,Java.io,Java..util包等J2SE等核心类的子集。CLDC是与手机相关的,它实际是定义一个设备制造商用来实现Java运行环境的标准,第三方开发者只需要遵循这个标准。CLDC主要影响Java开发和软件发布的以下方面:1)目标设备的特性;2)安全模型:安全模型有两个部分,虚拟机和应用程序安全。虚拟机安全层的目的是保护下面的设备不受任何执行代码可能引起的损害。2.3移动信息设备简表概述2.3.1MIDP的目标硬件环境1)显示:96*54象素,1位颜色,大约1:1比例;2)输入:(a)单手键盘或者小键盘;(b)双手的QWERTV键盘;(c)触摸屏。3)内存:(a)128KB非易失性内存,供MIDP组件使用;(b)8KB的非易失性内存,供应用程序生成的永久数据使用;(c)32KB的易失性内存,供Java堆使用。4)网络:(a)双响无线网络,可间歇性连接;(b)通常是很有限的带宽。2.3.2MIDP应用程序在MIDP上运行的Java程序被称为MIDlet。MIDlet是服从一些关于它运行环境和程序打包的一些规则。其运行环境是启动MIDlet,这是设备内置应用管理器的任务。应用程序能访问到下面的一些资源:(1)震动文件中的所有文件。(2)MIDlet描叙文件的内容(JAD)。2.3.3CLDC和MIDP库中的类打包:MIDlet应用一般采用震动文件的形式。这个文件应该包含运行应用程序需要的类和所有的资源文件,它也应该包含一个叫manifest.mf的清单文件。保存在震动文件中的清单文件是一个简单的文本文件,包含属性值。应用程序描叙(JADs)在移动电话网络上传送大量的数据,需要有一个描叙文件让用户在没有下载整个包之前来查看一下MIDlet震动的细节。第三章手机游戏开发过程3.1贪吃蛇游戏的规则简介贪吃蛇游戏的规则简介在贪吃蛇游戏中,玩家操作由小方块连接而成的蛇,去吃随机散落在画面内的小方块,每吃一块就增加一小方块长度,要是撞壁以及撞自己的尾,就属于失败,如无失败则直到通关为止。屏幕的长度的行向为11单位,纵向为18单位。在这个范围内,玩家通过操作方向键来控制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示效果。3.2详细设计本游戏的操作流程:用户在启动MIDlet后,即进入游戏主画面,屏幕开始显示为欢迎画面。用户按下[启动]按钮后,就可以开始玩游戏。当用户想暂停时,再次按一下[启动]按钮开始,游戏就暂停了,在暂停的情况下再按[开始]按钮,游戏继续运行。任何时候按[EXIT]按钮退出,游戏MIDlet都会终止。图:游戏流程转换过程3.2.1代码设计(1)游戏地图代码设计游戏地图是蛇的活动范围和食物随机散落的范围,游戏的容器为行向为11单位,纵向为18单位,如下代码:privatefinalintiX=10;//地图的开始坐标privatefinalintiY=10;//privatefinalintSWIDTH=16;//图标的宽度privatefinalintiCells=240;//地图的列数privatefinalintiRows=320;//地图的行数privatefinalintiBoxW=SWIDTH*iCells;//地图的宽采用二维绘图工具:二维绘图工具drawLine采用4个参数——直线起点的x、y坐标值和直线终点x、y的坐标值,例如:graphics.drawLine(50,0,100,0);这行代码会从位置(50,0)到(100,0)绘制一条直线。绘制一个矩形是一个类似的过程,不同的只是需要用起点加上宽度和高度的方式来指定这个对象。可以绘制透明的或者填充的矩形,甚至可以绘制圆角的矩形。4个绘制矩形的方法是:drawRect、drawRoundedRect、fillRect和fillRoundedRect。(2)贪吃蛇和食物的代码设计屏幕的长度为行向为320单位,纵向为240单位;在这个范围内,玩家操作方向键控制蛇的运动方向。该游戏的最大特色是屏幕自适应,无论各种手机,PDA的屏幕大小如何,该游戏总是能获得最佳的显示效果。贪吃蛇最初由10个小正方形组成,小正方形是蛇的身体和游戏容器的组成部分。食物也由一块小正方形组成,并且随机散落在游戏框图的区域内,每次只出现唯一的一个,待玩家操作游戏完成一个任务后面,再出现下个食物,小蛇每吃一个食物就增加一个长度。实现代码如下:publicintgetCell(){returniCell;}publicintgetRow(){returniRow;}publicvoidshow(){sLabel.setVisible(true);}publicbooleanisVisible(){returnsLabel.isVisible();}publicvoidhide(){sLabel.setVisible(false);}protectedvoidsetPosition(introw,intcell){iCell=cell;iRow=row;sLabel.setBounds(cell*SWIDTH,row*SWIDTH,SWIDTH,SWIDTH);}publicvoidmoveUp(){if(iRow0)setPosition(--iRow,iCell);elsesetTouch();}publicvoidmoveDown(){if(iRowiBoxH-1)setPosition(++iRow,iCell);elsesetTouch();}publicvoidmoveLeft(){if(iCell0)setPosition(iRow,--iCell);elsesetTouch();}publicvoidmoveRight(){if(iCelliBoxW-1)setPosition(iRow,++iCell);elsesetTouch();}staticbooleangetTouch(){returnisTouch;}staticvoidsetTouch(){isTouch=true;}staticvoidsetImTouch(){isTouch=false;}publicSnakeclone(){Snaketem=newSnake();tem.setPosition(this.getRow(),this.getCell());returntem;}(3)操作控制代码设计MIDP的游戏设计,本质上就是用一个线程或者定时器产生重绘事件,用线程和用户
本文标题:游戏设计报告
链接地址:https://www.777doc.com/doc-2288306 .html