admin 管理员组文章数量: 1086019
2024年6月2日发(作者:linux 查看文件夹大小命令)
第12卷第20期2012年7月
科学技术与工程
Vo1.12 No.20 Ju1.2012
1671—1815(2012)20—5056—04
Science Technology and Engineering
⑥2012 Sci.Tech.Engrg.
基于J2ME的通用游戏框架设计的研究与实现
陈 勇 巫宗宾
(宿迁学院计算机科学系,宿迁223800)
摘要为了更简单快速地让初学习者学会游戏开发,设计出了一种更完善、易用的游戏框架。对于部分J2SE中的部分基础
JAVA微型版本
TP311.52;
通用框架 RMS
A
类进行简化移植,增强菜单控制、NPC设计、A1人智能设计等,能使游戏的开发更为便捷,更为简易。
关键词
中图法分类号文献标志码
J2ME小游戏即在消费类电子设备上运行的游
戏。例如个人数字助理(PDA)和移动手持设备
(MID)上运行的小游戏大多为J2ME小游戏
手机游戏的类型主要有动
作、策略、冒险、角色扮演、运动以
及模拟和益智等游戏。但其基本
框架都是由下面四部分构成:一
个完整的J2ME架构,由上至下包
简表
(Profile)
。
配置
(Configuration)
虚拟机
virtual Machine)
括4个层次的内容:简表(Pro.
ifle)、配置(Configuration)、虚拟
底层操作系统
(Operating System)
圜函圜
CLDC受限设备配置
机(Virtual Machine)和操作系统
(Operating System),如图1所示。
J2ME使用简表和配置定制
图1 J2ME完
整架构
员快速构建游戏程序,由CLDC配置表和基本游戏
Java运行时环境(JRE)。作为一个完整的JRE,J2ME
由配置和简表组成,配置决定了使用的JVM,而简表
通过添加特定于域的类来定义应用程序。
框架GameCanvas游戏画布类,Layer图层类,Tile—
Layer类,LayerManager图层管理类,Sprite精灵类
等,MainMenu主菜单类,TalkAbout对话框类,
Process进度条类,BaseRMS数据库基类,URLEnco-
derUTF8编码处理构件,StringTokenizer字符串分割
困
图2游戏通用框架
而游戏设计的基本框架主要由GameCanvas游
戏画布类,Layer图层类,TileLayer类,LayerManager
图层管理类,Sprite精灵类等几个基本类构成。对
于游戏的开发还远远不够简单灵活。故本文提出
设计更多的更灵活的类来扩展其通用游戏框架。
处理,TimerTask计数器模块,SplashScreen闪屏模
块,Skin Treatment皮肤处理,A1人工智能处理类等
类构成.
MainMenu主菜单类主负责菜单的构建,各屏幕
处理类的调用。
TalkAbout对话框类主要用来处理游戏过程中
要处理的对话及确认。
1通用游戏框架设计
游戏通用框架为方便游戏教学人员和开发人
2012年4月5日收到
Process进度条类主要用来处理图片的加载、资
源加载、关口转换等进度需求。
BaseRMS数据库基类主要用来处理数据的
第一作者简介:陈勇(1977一),男,四川乐山人,讲师,硕士,研究
方向:嵌入式系统。E・mail:ehenyong301@tom.com。
20期 陈勇,等:基于J2ME的通用游戏框架设计的研究与实现
存储。
的自动化处理功能。增加游戏难度的问题,及各种
uRLEncoderuTF8编码处理构件主用来处理 自动精灵活动的算法加载。
UTF8编码的问题。
网络基础构件httpHandler主要用于构建网络
StringTokenizer字符串分割处理主要用来处理
游戏的通信,H1_rP协议的处理,信息传输与接收入
对话语言多条语句输入问题。
的主要方法。
SplashScreen闪屏模块主要用于游戏欢迎界面
处理问题。
2通用框架主要类的类图
Skin Treatment皮肤处理主要用于处理游戏中
以下各个类在游戏中导航、存储、AI、网络应用
对话框皮肤的换肤问题。 等编程中类的关系如图3。
A1人工智能处理类主要用于处理非玩家对象
BaseRMS interface ̄
SplashScreen EvelltU¥tener
earl 黼I_擗0 rdStore:RecordStore  ̄iiiiiiEi ENT ACTION:int=一’{readOnly}
lnie:{nt
×
Hn酬ame:Stdng ! l 蠹 ENT UNOEFtNED inl=0(madOnlv). l
礴 lay:Display i!i!!iSlaSeRMS(Stdng 糍 ∞ # 3吕EveITtant.ContaIner.ObIectFI):void l
i榭aae:Image …" … 。""" "…“ … …
E ∞ ayabIe ∞ace0 糟ultL)atao VOi0
・
l}n'# Imef g9特孵∞椰 forel :Reco脚Store
 ̄: ̄etRMSNameO Stirng Gamen
a ̄ ̄ess(Spla8hScreen):void l 辑 鞠IaD’void
榭鳓帮∞嘞:Void en0:void
㈣ ¥ ma姆Pr
辫
oce蚓ng【0bject)void
黼 ∞Ba nt)void “ d裔teDeta0 void 津 礤ma摊proces ̄Ing(Stdng1:jnt
携 囊女i
。a僦【
 ̄t(
詈
Gr
l
e
毪
phI
8潞鲫n
妫》:vo|
t
d
十H ………西…—— : ¨
8u柑 a挺}PI。=ce sing(int,Stdng)Stdng
黼裕 却() void
,
int):void “
l0 rra Proce sing(intm]):_ntn
0maleP吣ce ng(strIngDn):Stdng ̄
麟箍醚 8料een(Display,DIsplayable,Image,int) Se戗inga
一_ 蠢 一…… ……一 lot
L拈
CotmlandLia培a6
CountDown
TimerTask《 d al 截
Sl
m S蚋ngTokenlzer
Enumeratic ;
l
e }( 椭ma 1d:COmmand n
MalnMeau
ewQ
)lTimandf,.遵H{
日:{
鳓 :∞ a蛳gcre, en:。p a ̄Screen{rea 。n y, —B0 嚣耋Iin0 《 b mI№隋:String l semctGommand:Command newCommend( 确定.
一
s埘ng s 日期iimsChan ̄led:boolean
臻:∞|d
’ I 《 嚣l∽ e豁£ ma ̄o m
Po
si
si
t
t
i
io
on!i
cnh:a cint har nH 嘲稍螂 鲁n捌“辩 ∞e n(}:void
灞妇 £0e¨m&
bool
nt
}i 赫
ean
t ̄ansCN
l
ii!iii;ii1 i0 ̄denu0:void
磐 l e0: Strina l 糍 巍b ̄et0;void
n
l
辨 p秘; d
0嘲 en ’iCOde2UTFSByte(5tring):byte ̄ §gl黝 S ∞“ o糖nso:int l
糍 ¥ S酶 尊鳓:void
拦 H e 下F8S啊ng2unlcode(string).String 冒 l S麟耪乌 ha ̄oteElements()’boolean }l k
蠹 I 囊,∞ ̄62Unicode(byteB):StdncI 鞲 {嚣自d霸l撼 : 秘黼 n地下o}祜n9o:boolean l l ReadFi 。
鳓毛酮础 e2Byte(string):byte[】 糍
灞辫獬
蛐锺S《擞na 螂 E塘ment():Ob ect
日蓥鞋 F ne卅o nf】:Stdn!
,
ect
l
l}
l
删 鲥 0{readOn r
… … ……
C ̄f)vss :器:警 嬲 §趣H臻尊曩al船n噼n(8in拼t1n:g ) String l l撩 }IeO
糍 辩lM ̄xDelimChar( void
WalSIlIg I interface ̄
一…J ……^ I H嘲c’c nec髓onHan删er Map
露 l 0疆 ACCEP St
端 必 iK|nTreatmenk:SklnTreatment dng Accept (readOnlvl i)g ̄ndCoIOn int
撼 霸麟‘ 掌 糕: ∞N隧甜 0pTlON:String= Connection {readOnly} )maeMao:i nl(【lH)
纛 槲灞oT霉oM—eE ER:int=4{readOnly1 ≈ 00N蕾器晰 NGUAGE:Stdng ”Content—Language {eradOnl vl 巍 醐OVEMENT:i r =2{eradOnly]
鳓 瓣 0 干OM—LEFT:int=5{madOnly】 目 e0树 蠢 玎。下 P拦:Stdng=”Content-Type”0 adOnl v】 黼 旺 =f )
.
n(madOr ̄y:
B ̄OM_RIGHT:int=3{readOnly} “R 08 Stdng=仆x-Online.HO鱼“『舟adOnlv1 鞋戮 暖i难HD=f ),0 n..{n ̄adOnly
舞 藏 酾l 嫩int锄) =鹂辩c。 £ ENCODING:String ”Content-Encoding”伸ad0nIv】 鞋 麟 曲:im棚睡蜀( ) 0 0.如a y
潮 coUNT:int 4{readOnly} 拣嚣 c0 琶N曩LENGTH:Stnng= Content—Length”{eradOnly) :int羽m { )
,
瓣瓣黪a∞s Image(玎) 鼙| S摊《灏}娃E WpE:Stdna ”Content-Tvoa 打ead0nl v1
0,0舾 ,
糍 l鞲 瓣 蝌l曩DLE—CENTER,int=8{readOn J yJ 簿蟪 基 Stdlig t Date {readOnly} l 柑Map:TiledLayer
誊 骧 1)L ̄nHataht:Int
M b U ̄LP.ncoderuTF8 l S SERVER:String=,Sewer'’{readOnly} 科 HEIGHT:int=10{readOnly}
 ̄aseL3iti':int (’e 一tA ){readOnl y) l整 l滞a ̄onseuate(Http ̄nnection):0bIect
鞭
’
)d ̄f
瓣 l
蕈l 蓐一
I羲 UM
uM—c0L:int=’8{eradOnly)
嵇 l蛳I 臻n辨Neade ̄HttpConnection
ROW:int
d
aaltEncName:Stifnq ”
—
.
StdnaI]1:Hashtable 攀眶E WIDTHi int=10(readOnlvt
bntNeedEncodIno:boolean fI1l anseHbaderPteperty(HttpConnection
,
aI薅ne 孽睡il ̄tl l f鞠日ue或Heade《Hltp( om1ectIon
Stdna' ̄:StdRQ
.
Hashtable1 boolean g  ̄rouna(Ⅺ1or(j int
酾 城 M ̄RADIX:Int=36(readOn lbml -叫je盛He静derPreoellvt'HitOConnection Strln ̄ 1Stdnal・hnnI 黪g麟M自辩0:TiledLayer
撵 崭阳at: 黼l 。RADIx:int=2{readOn Y } b日麟 ue ua憾制 tpGonnec ̄ion Object) boolean  ̄tetMapLength():int
日a} “ l 蝴矗拍ethod(一Hpeonne cli0n,String).boolean l getMabScm Amount()int
蒜嗡
越H“
 ̄ncodefstr
anGode(str
ing.Stri
inq):St
ng):St
dn#
dng
}~……………………………………………………1 ge
Mgb(i
ab ype㈣
bt)
.
int):int
辍 ̄git(iilt.int):char
赫嚣鞴n薯
;iiii!!iii!lUi ̄EficoderUTF8(1
r十_ 口fap)s:0 :int
图3通用游戏框架类图设计
5058 科学技术与工程
0,0,3,0,3,0,0,4,3,3,
12卷
图3主要描述了MainMenu导航器类,Settings
设置类与BaseRMS数据库基类等的类图结构,这些
类的主要属性和方法。
MainMenuScreen导航器界面通过继承List,加
3,2,3,0,3,0,3,2,2,4,4,4,4,2,2,0,3,0,33,3,
,
●●●
-
};
}
载MainMenu主菜单类其后主要设置一些菜单列
表,在主类中Midlet中通过方法访问,转向各导航
页面。
A1人工智能处理接口中?AI(Artiifcial Intelli.
gence),即人工智能,有时也称作机器智能或人工
脑,是指那些由人类制造出来的系统,在面对具体
事务时,所表现出的类人反应。通常情况下人工智
BaseRMS主要描述开启数据库open(),关闭数
据库close(),获取数据库名更新数据getRMSName
(),加载数据的方法loadData()等。通过Settings
类的各方法使用BaseRMS类进行一些数据的存储
工作。Settings类通过getCmnet()方法可以对网络
访问方式进行HTFP网络连接类型修改。
TalkAbout对话框类、Process进度条类、Splash—
Screen闪屏模块等类主要处理程序流程,UTF8编
码处理 ]、网络连接 ]、事件处理等类具体属性方
法见图4所示。
磨cn. ̄om.javachen skin Treatment
啦豳ActionListener.java
审 Container.java
崮逾Font.java
,
国Process.java
审国SkinTreatment.java
霹麓TalkAbout.java
南陵WindowFrom.java
矗J2ME library fJ2ME Wireless Toolkit 2.2 MIDP 2.0
图4各类在通用框架库中的包图
3通用框架主要类的代码实现
其地图类的主要代码,我们可以通过地图类为
基础,快速地构建各关口的地图加载。
public class Map{//二维地图使用实例
public static int[]map0—1eve11:{0,0,0,0,0,0,0,0,0,
能多指以人类思维模式为准绳,通过计算机模拟实
现的智能。我们定义其接口为:
public interface AtLi ̄ener{
public abstract void automateProcessing(Object O);//对象处
理算法方法
}
游戏中会设置很多敌方精灵,称为NPC.我们在程序中设置很
多自动运行的NPC.如下代码所示:
npc=new NPCSpfite[NPC—CT];
npc[0]:new NPCSprite(npclmages,16,16,NPCSpri—
te.NPC
—
CANON1,width,heihgt);
npc[1]=new NPCSprite(npclmages,16,16,NPCSpri—
te.NPC
—
CANON2,width,height);
npc[2]=new NPCSprite(npclmages,16,16,NPCSpri—
te.NPC
—
CANON3,width,height);
网络处理
//http请求常量
public static ifnal Stirng RQH—HOST=”X-Online—Host”;
public static final String RQH_ACCEPT=”Accept”:
public static final String RQH—.CONTENT—.LANGUAGE
=
”Content—Language”:
public static final String RQH—CONTEN 1’_rrYPE=“Con—
tent-Type”;
public static final String RQH——CONNECTION——OPTION
=”Connection”:
//http回应常量
public static final String RSH
—
DATE=”Date”;
public static ifnal String RSH
—
SERVER=”Server”;
public static final String RSH
—
MODIFIEDDATE=”Last-
Modiifed”;
public static final Stirng RSH
—.
CONTENT
—.
ENCODING
=”Content—Encoding”:
public static final String RSHCONTENT
LENGTH=”
——
Content—Length”;
public static final Stirng RSH
—
CONTENT
—
TYPE=”Con-
tent—Type”;
20期
事件处理:
陈勇,等:基于J2ME的通用游戏框架设计的研究与实现 5059
不仅使初学者很快入门,而且能够使用游戏框架快
速开发出比较完美的手机游戏。
public interface EventListener{
ifnal static public int EVENTUNDEFINED=0;
inalf static public int EVENT
ACTION:一1;
_
本文作者创新点:以创新的方式扩展了J2ME
的游戏类库,在原有五个类的基础上,创建了对游
戏皮肤、等待界面、人工智能接口、菜单、编码方案、
public void processEvent(int eventType,Container c,Object
[]args);//事件处理方法
}
H,ITI1P通信接口、数据库处理等类的程序设计。
4通用框架实现坦克游戏运行图
参考文献
1徐洪智.利用Tc实现五子棋游戏.电脑编程技巧与维护,
2010;(O3):74—_76
2朱全银,章慧.基于J2ME和J2EE的移动网络游戏系统.计
算机工程,2008;(16):141~143
3钟海平,曾玉珠.手机游戏“坦克大战”的开发.电脑编程技巧
与维护,2009;(03):82—86
4张新猛,蒋盛益,姜灵敏.基于j2me/socket的手机网络游戏设计
与实现.微计算机信息,2010;(36):244--246
5杨秋霞.基于J2ME的手机游戏开发.计算机时代,2005;(05):
12—14
6姚盛旺.基于J2ME的手机网络游戏应用研究.武汉:武汉理工
大学,2006:l_57
7陈勇.基于J2ME无线应用中的编码转换.电脑开发与应用,
图5 坦克游戏包结构及坦克游戏运行截图
2007;(12):67
8陈勇,张曦煌.基于GPRS通信的J2ME家长信息系统.计算
5结束语
机工程与设计,2008;(08):285—287
本系统基于J2ME规范,构建了通用游戏框架,
J2ME Game Based on Universal Design Research
and Implementation Framework
CHEN Yong.WU Zhong—bing
(Department of Computer Science,Suqian College,Suqian 223800,P.R.China)
[Abstract] In order to more quickly and easily SO that students learn early game development.a more compre.
hensive,user—friendly framework of the game are designed.For some parts of the J2SE base class to simplify migra.
tion to enhance the menu control,NPC design,AI design,intelligent people can make game development easier
,
more simple.
[Key words]J2ME Common framework Record Management System
版权声明:本文标题:基于J2ME的通用游戏框架设计的研究与实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1717278936a704118.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论