基于Java的手机游戏开发与设计.docx
- 文档编号:24319411
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:28
- 大小:482.39KB
基于Java的手机游戏开发与设计.docx
《基于Java的手机游戏开发与设计.docx》由会员分享,可在线阅读,更多相关《基于Java的手机游戏开发与设计.docx(28页珍藏版)》请在冰豆网上搜索。
基于Java的手机游戏开发与设计
基于Java的手机游戏开发与设计
摘要在信息技术飞速发展的今天,随着的手机日益普及,手机游戏也成了人们生活中不可缺少的一部分。
Java在移动设备上的功能实现也越来越具影响力,为丰富人们的生活,提供服务等方面提供了诸多方便。
本文主要介绍一款基于Java语言开发的手机游戏——贪吃蛇,该设计主要是应用J2ME技术,结合JDK1.6.0,使用IDEEclipse3.4与EclipseMe1.7.9作为开发工具,以SunJ2MEWirelessToolKit2.5.2软件作为模拟测试工具的综合性的开发设计。
本设计主要是对手机游戏的开发过程的各个环节做了详细的介绍,其中包括:
手机游戏开发平台的搭建与测试、具体设计及开发步骤、软件测试运行与打包生成等,实现了经典游戏——贪吃蛇的手机嵌入,以便满足一些手机用户的娱乐需求。
关键字J2MEWTKEclipse
ABSTRACT
Inthedayofrapiddevelopmentofinformationtechnology,withthegrowingpopularityofmobilephone,mobilegamesalsobecometheindispensablepartindailylife.Javainthefunctionrealizationofthemobiledeviceisalsomoreandmoreinfluentialforrichpeople'slifeandprovidingservicesofferedmanyconvenient.ThispapermainlyintroducesamobilegamesnakeofJavalanguagedevelopment.Thisdesignisacomprehensivedevelopmentdesign,whichmainlyapplied1.6.0JDKJ2MEtechnology,combinedwiththeEclipse,useIDEEclipseMe1.7.9as3.4developmentTool,ToolKitto2.5.2fromJ2MEWirelesssoftwareassimulationtesttools.Thisdesignismainlytothemobilegameseverypartsofthedevelopmentprocessaredescribedindetail,including:
thecellularphonegamedevelopmentplatformandtesting,specificdesignanddevelopmentsteps,softwaretest,operationandpackagedgeneration.Realizetheclassicgame-snakephoneembedded,inordertomeetsomecellphoneusersentertainmentdemand.
KeyWords:
J2ME,WTK,Eclipse
1.绪论
任何游戏在设计之初,所面向的目标群体的定位都不尽相同,自然的影响游戏设计的动机也会不同,受到游戏设计导向和动机的影响,任务的设计目的大体可分为:
提升游戏娱乐性、使玩家压抑释放、获得心里满足、同时也可视为一种赚钱的手段。
随着3G技术的普及和应用,基于Java的开发软件在手机上的使用非常的广泛,手机增值服务的内容也是越来越多,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
在这个信息社会中,随着信息网络化的不断进展,手机游戏越来越多的走进人们的工作和生活。
其中现在游戏开发的主流技术包括:
基于嵌入式游戏开发与设计、基于Java游戏开发与设计、基于BREW游戏开发与设计等。
其中随着3G技术的飞速发展,Java手机游戏具有更大的市场优势。
本设计通过查阅相关书籍,研究手机游戏开发与设计的整体设计流程及设计思路、学习并使用Java语言进行程序的编写及运行调试,完成基于Java语言的手机游戏的开发与设计。
2.手机游戏
2.1.手机游戏现状
在信息和网络高速发展的今天,手机已经成为不可或缺的通讯工具,它的普及速度之快,让人瞠目,在短短的几年间,手机及其它无线设备已经走进了普通百姓的工作和生活。
众所周知,手机的规模越来越壮大、功能也越来越强大,而游戏也已成为手机上不可缺少的功能,目前,手机游戏业正在以良好的发展前景飞快发展着,而且将进入一个高利润的稳定增长期。
2.2.手机游戏分类[1][2]
随着信息技术的飞速发展,手机游戏的逐渐的多样化,具体分类归纳如下表⑴所示:
游戏形式
文字类游戏
短信游戏
wap浏览器游戏
图形类游戏
嵌入式游戏
java游戏
brew游戏
uni-java游戏
画面形式
纯文字手机游戏
2D手机游戏
3D手机游戏
表⑴手机游戏分类列表
短信游戏:
玩家和游戏服务商通过短信中文字的内容来交流,达到游戏目的的一种文字游戏。
一般玩家通过回复短信的形式来进行游戏,游戏单调、枯燥无味。
Wap浏览器游戏:
通过手机上网,使用浏览器浏览网页来进行的一种文字游戏,玩家根据Wap浏览器浏览到的页面上的提示,以选择不同的选项的方法来进行游戏,游戏不够直观、单调无趣。
嵌入式游戏:
将游戏程序预先固化到手机中的一种图形类游戏,其中固化过程在手机出厂前就已经完成。
因此这种手机游戏不能进行任何修改或删除操作。
Java游戏:
Java是一种Sun微系统公司所发展出来的程序语言,它具有很多有利于手机游戏开发的性质,例如封装性、安全性等,便于手机游戏的开发与设计,而且目前在手机上应用最多的就是JAVA游戏。
BREW游戏:
和java类似,brew也是一种程序语言,BREW(BinaryRuntimeEnvironmentforWireless)即无线二进制运行环境,brew游戏的一主要特点就是可以扩充容量。
Uni-java游戏:
中国联通刚刚为其手机准备的一个新的通用开发平台。
Uni-Java可以让中国联通的手机也支持并运行Java程序,同时也支持一些Java游戏。
目前已经有相当数量的厂商开始进入Uni-Java手机游戏开发的领域。
2D手机游戏:
采用图形类的手机游戏,其中手机游戏界面为二维图像。
3D手机游戏:
延续2D手机游戏继续发展,手机游戏界面也由二维图像发展为三维图像,给玩家以更好的视觉效果,使游戏更具娱乐性。
3.程序开发语言[3]
3.1.J2ME
J2ME是SUN公司推出的针对嵌入式消费类电子产品的开发平台,J2ME与J2SE和J2EE共同组成Java技术的三个重要的分支。
其中J2ME的一个关键优点是,J2ME与所有支持Java的设备都是兼容的。
目前,J2ME中有两个最主要的配置,分别是连接有限设备配置CLDC(ConnectedLimitedDevicesConfiguration)和;连接设备配置CDC(ConnectedDevicesConfiguration)。
3.2.J2ME程序开发流程
3.2.1.编译
编译就是把所编制的*.Java文件,编译成二进制的*.class文件。
Java.exe是由Sun公司编写的一个编译器,它可以把*.Java文件成为*.class文件。
其中,如果一个*.Java文件中定义了多个类,它就将被编译成多个*.class文件。
3.2.2.混淆(可选)
由于class文件格式透明的缘故,Java文件很容易被反编译。
因此,如果不希望别人掌握你的源代码的话,就一定要进行混淆(Obfuscate)。
所谓混淆,就是利用工具,将方法各类名改成没有实际意义的特定的字符及代号,增加阅读的难度。
这样做的目的是为了更充分的保护了自己的知识产权,而且混淆器还可以减少程序的大小。
混淆器一般都是由第三方软件开发商提供的,许多都是开源的,可以免费使用。
3.2.3.预审核
在完成编译后,必须对*.class文件进行预审核,因为class在传输过程中容易损坏或是被篡改,且手机的资源有限,所以在手机上审核一般比较困难。
因此为了使我们在手机上进行的审核工作量减少。
我们在PC机上进行一部分预审核工作。
3.2.4.打包
MIDP可执行文件后缀名为jar。
后缀为jad的文件是jar文件的描述文件。
在仿真器或手机上安装运行有了jar及jad文件后,就可以把它们放到仿真器或手机上运行了。
至于如何把它们放到手机上,根据手机的功能不同,可有如下几种方法:
使用数据线,将PC与手机相连,下载文件;使用红外线;使用蓝牙;使用OTA空中下载(利用短信/WAP)。
3.3.Java语言的特点[4]
3.3.1.平台独立性
要使应用软件在网络中的任意一台电脑中都能够正常运行,就必须使得软件具有平台独立性。
软件的平台独立性一直以来都是软件发展的需求及开发者所追求的首要目标,而Java正是一款具有平台独立性的编程语言,在源程序级保证了其基本数据类型与平台的无关,使得Java程序可以在世界范围内共享,为程序的编译和解读提供了很大的方便性。
3.3.2.面向对象
面向对象的软件编程技术是当今软件开发行业中最常用的一种技术,Java正是一款面向对象的编程开发软件。
它使用一种被称为“类(class)”的软件对象,代码可以重复使用和可以扩展,使得程序开发变得容易许多。
具体来说,面向对象性包括以下三个特点:
封装性:
Java提供了类机制,以类对象为基本组成单元,对象中封装了状态变量和方法。
Java的封装性很好的体现了模块化和信息隐蔽等良好的程序设计思想。
继承性:
Java编程语言中最重要的数据类型是类,它提供了单继承机制。
为了解决多继承的问题和克服了多继承的复杂性,Java引进接口(interface)的概念,进而使得Java程序更容易被扩展和使用。
多态性:
Java语言通过方法的重载和覆盖实现多态性。
方法重载是指一个类中可以有多个名字相同,但参数类型不同的方法。
方法覆盖是指在继承的过程中,子类可以重新定义父类的某种方法,实现自己需要的功能。
3.3.3.安全性
作为Web编程语言的一种,Java具有良好的安全结构和安全策略。
代码在编译的过程中接受多层的安全检查。
在实现安全性方面,主要采取的措施包括:
取消指针操作、内存管理自动化、提供多网络软件协议的用户接口等。
3.3.4.多线程
通过多线程运行机制,Java支持多任务和并行处理。
也就是说,Java可以同时处理多个执行线程。
Java编程语言的多线程行,极大改善了CPU的吞吐量、响应时间等性能指标。
3.3.5.分布式
Java中包括了一个支持HTTP和FTP协议传送和接收信息的库函数,因此可以通过URL地址在网络上很方便地访问其它对象,其访问方式与访问本地文件系统几乎完全相同。
4.开发环境及相关技术介绍[5]
4.1.开发环境
操作系统:
MicrosoftWindowsXP
程序语言:
Java2
开发包:
Java(TM)2StandardEdition(5.0)
SunJ2MEWirelessToolKit2.5.2
JDK1.6.0
IDE:
Eclipse3.4EclipseMe1.7.9
4.2.JDK
4.2.1.JDK简介
JDK是Java开发工具包(JavaDevelopmentKit)的缩写,它是一切Java应用程序的基础,是整个Java的核心。
J2ME是Java语言的一种,所以在安装J2ME开发工具之前,就必须先安装JDK。
4.2.2.JDK的安装
下载JDK,使用版本为JDK5.1,默认安装路径安装。
4.2.3.JDK的配置
配置环境变量,具体变量及其变量值如下表⑵所示:
变量名
变量值
JAVA_HOME
C:
\ProgramFiles\Java\jdk1.6.0_10;
PATH
C:
\ProgramFiles\Java\jdk1.6.0_10\bin;
CLASSPATH
C:
\ProgramFiles\Java\jdk1.6.0_10\lib;
C:
\ProgramFiles\Java\jdk1.6.0_10\lib\tools.jar;
表⑵JDK中变量配置列表
4.2.4.JDK测试
在DOS模拟窗口中输入“java-version”,得到如下图
所示,即安装JDK成功。
图
测试JDK
4.3.WTK
4.3.1.WTK简介
WTK的全称是SunJ2MEWirelessToolkit——Sun公司提供的无线开发工具。
此工具包是为了帮助开发人员简化J2ME的开发过程而设计的,该工具包包含了完整的生成工具、实用程序及设备仿真器。
WTK不需要多余的配置,对各种模拟器可以说是即插即用,而且在WTK下的程序目录简洁明了、方便查询。
目前各大手机厂商往往把WTK经过自身的简化与改装,推出适合自身产品。
4.3.2.WTK的安装
下载WTK,使用版本为WTK2.5.2,默认安装路径安装。
4.3.3.WTK测试
运行“SunJava(TM)WirelessToolkit2.5.2forCLDC”,弹出如下图
所示界面证明WTK安装成功。
图
4.4.Eclipse与EclipseMe
4.4.1.Eclipse与EclipseMe简介
Eclipse是一个开发源代码的、基于Java的可扩展的开发平台。
Eclipse最大的一个特点就是它是完全免费的,是一种可扩展的开放源代码IDE。
在Eclipse中几乎每样东西都是插件,且各种插件都为我们提供开发程序的各种功能。
同时各个领域的开发人员通过开发插件,可以构建与Eclipse环境无缝集成的工具。
EclipseMe为Eclipse的一个插件,致力于帮助开发者开发J2ME应用程序。
EclipseMe并不为开发者提供无线设备模拟器,而将各手机厂商的实用模拟器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。
4.4.2.Eclipse与EclipseMe的安装
下载Eclips,使用版本为Eclipse3.4,默认安装路径安装。
下载EclipseMe,使用版本为EclipseMe1.7.9,默认安装路径安装。
4.5.WTK与EclipseMe的绑定
将WTK绑定到EclipseMe,会大大提高开发者的工作效率。
启动Eclipse,选择“windows”菜单,再选择“Preferernces”,在对话框中选择“J2ME”选项,再选择“DeviceManagement”选项,单击“Import”按钮,在安装了WTK2.5.2的路径下,选择WTK2.5.2文件夹,再单击“Refresh”按钮,这是“Devices”列表中就会列出所有模拟设备,如下图
所示,即WTK与EclipseMe的绑定成功。
图
5.游戏的开发与实现
5.1.游戏工程及程序的建立
5.1.1.建立新的工程文件
运行Eclipse软件,新建工程“J2MEMidletSuite”,如下图
所示,其中,设置项目的运行环境如下图
所示,游戏的工程建立完成。
图
图
5.1.2.新建主程序文件
在工程文件夹,新建主程序“J2MEMidlet”,如下图
所示,游戏的主程序建立完成。
图
5.1.3.向主程序内添加类
方法一:
鼠标右击工程文件夹,依次选择菜单项“New”→“Class”,将类命名为“SnakeCanvas”,单击“Finish”按钮,完成类的加载。
方法二:
主程序编写完成时,在主程序中调用的类名“SnakeCanvas”下有红色下划线,说明该类没有被添加到工程中。
用鼠标单击类名“SnakeCanvas”,在出现的下拉菜单中点击“Createclass‘SnakeCanvas’”,如下图
所示,则完成类“SnakeCanvas”的加载。
图
5.2.手机中的坐标系
手机中的xy坐标系与普通的xy坐标系有所不同,手机中,以屏幕的左上角为原点,水平方向为x轴,垂直方向为y轴,如下图
所示:
图⑻
5.3.游戏的具体实现环节
●数据的初始化;
●变量的定义及赋值;
●设置屏幕背景颜色为粉红色;
●设置画笔颜色为红色,并绘制贪吃蛇蛇身及食物;
●食物的产生及其产生位置的限制条件;
●蛇身的移动;
●手机按键功能实现;
●达到游戏结束条件时,游戏结束;
●游戏的运行与调试
●游戏的模拟实现;
●游戏的打包生成;
●.jad及.jar文件的生成
5.4.具体编程的实现
5.4.1.主程序的编写及功能实现
//系统导入相应的包,其中有自动加载的,也有手动导入的部分。
具体导入包的情况,要依据程序中所用到的类的种类。
importjavax.microedition.lcdui.Display;
importjavax.microedition.midlet.MIDlet;
//myMIDlet类的具体实现
publicclassmyMIDletextendsMIDlet{
//实现两个Canvas类之间的切换
SnakeCanvasdisplayable=newSnakeCanvas();
publicmyMIDlet(){
//获得当前MIDlet的Display对象,并设置SnakeCanvas对象为当前的显示对象
Display.getDisplay(this).setCurrent(displayable);
}
//系统自动生成代码,本程序中默认其初始状态
publicvoidstartApp(){
}
publicvoidpauseApp(){
}
publicvoiddestroyApp(booleanunconditional){
}
}
5.4.2.变量的定义及赋值
publicclassSnakeCanvasextendsCanvasimplementsRunnable{}
定义贪吃蛇节点坐标:
其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标。
int[][]snake=newint[200][2];
定义已经使用的节点数量。
intsnakeNum;
贪吃蛇运动方向。
0代表向上,1代表向下,2代表向左,3代表向右(其中方向的控制变量依据手机开发平台的不同而不同,例如:
Nokia手机开发平台中,-1表示向上、-2表示向下、-3表示向左、-4表示向右。
这里所用的为SunJava(TM)WirelessToolkit2.5.2)。
intpoint;
//向上
privatefinalintKEY_UP=0;
//向下
privatefinalintKEY_DOWN=1;
//向左
privatefinalintKEY_LEFT=2;
//向右
privatefinalintKEY_RIGHT=3;
定义游戏区域宽度。
intwidth,height;
定义蛇身单元宽度。
privatefinalbytesnakeWidth=10;
利用布尔类定义状态:
是否处于暂停状态,true代表暂停;
booleanisPaused=false;
是否处于运行状态,true代表运行。
booleanisRun=true;
定义食物的X坐标及Y坐标。
intfoodX,foodY;
5.4.3.数据的初始化
初始化开始数据。
privatevoidinit(){};
初始化屏幕大小。
publicSnakeCanvas(){
init();
width=getWidth();//设置游戏界面,宽度为屏幕宽度
height=getHeight();//高度为屏幕高度
newThread(this).start();
}
初始化节点数量。
snakeNum=7;
初始化节点数据。
for(inti=0;i snake[i][0]=100-snakeWidth*i; snake[i][1]=40; } 初始化移动方向。 point=KEY_DOWN; 初始化食物坐标。 foodX=100; foodY=100; 5.4.4.设置屏幕背景颜色为粉红色 设置屏幕 Canvas是个画布,graphics是只画笔,主要用于实现在Canvas画布上绘制图画。 protectedvoidpaint(Graphicsg){} 清屏并设置屏幕背景为粉色 其中,粉色的RGB代码为0xffcccc,格式为(0xRRGGBB) g.setColor(0xffcccc); 5.4.5.设置画笔颜色为红色,并绘制贪吃蛇蛇身及食物 设置画笔为红色,红色的RGB代码为0xff0000。 g.fillRect(0,0,width,height); g.setColor(0xff0000); 绘制蛇身 for(inti=0;i g.fillRect(snake[i][0],snake[i][1],snakeWidth,snakeWidth); } 绘制食物 if(b){ g.fillRect(foodX,foodY,snakeWidth,snakeWidth); } 5.4.6.食物的产生及其产生位置的限制条件 食物的坐标必须位于屏幕内,且不能和蛇身重合 privatevoidgetFood(){ while(true){ foodX=Math.abs(r.nextInt()%(width-snakeWidth+1)) /snakeWidth*snakeWidth; foodY=Math.abs(r.nextInt()%(height-snakeWidth+1)) /snakeWidth*snakeWidth; booleanb=true; for(inti=0;i if(snake[i][0]==foodX&&snake[i][1]==foodY){ b=false; break; } } if(b){ break; } } 5.4.7.蛇身的移动 privatevoidmove(intpoint){}; 蛇身移动 for(inti=snakeNum-1;i>0;i--){ snake[i][0]=snake[i-1][0]; snake[i][1]=snak
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 手机 游戏 开发 设计