华容道游戏讲解
J2M游戏开发实E例解 讲
uAtho: r滴蔚蓝一 | 色Dat:e 2070-1-060 |Vi w:e9 676 | 开 技术 发 程序设计 | Dig-:g0 跳
转
JM2E游戏发实开例解 讲
页 面 2
页面 1 共 2
一、言序
昨
在天上网闲逛,现一篇讲发用解delphi实华现容游戏道的章,颇受启文.发是于,产生了华容道将游移植戏手机到中去的动冲.在现手机游琳戏琅满目不一,足,而华道容实的版本现也多很.巧不久前笔者正J对2ME下一了功番,正想借这个夫会机试牛刀。选用J小2M的E原因还有个就是目一前aJa开发v行大到其,线无殖增务业猛迅发,展J2M的E应日渐用跃起活来,希也我望这篇文章能的为J2ME知够识的及普和发团队开的壮大波助推。澜由于长期受SIO范的规响,影次小试牛这刀也打算我遵照件工软的程要求,并采取布瀑的式发开式来模划项目,规希望借此机会向也位没有各会机参正与项式目开的读发介绍者一软件开发下的程。流
这我们里先义项定目的人组体员(其制实只我一有个人:)技术调研、需求析、概分要计设、细详计、设编、测试码均笔者一有担任人美工这;里我了个捷找径,盗网上用成现图的,片后然用ADCeS把e它BM由转换PP成NG格式我出于讲(座的目,未做商的业应,应该用算侵权吧);不于发至布工作由,于少缺O AT务器服此项工作不,做(是我会但介这绍如何步做)。
接来下,我们规划一项目下实现时的间表,我以个人经验设想如下,:技调术研用天2(这部解决分项的目可性和行大重技术问题时间会,长些一,需)分求用半析天(竟有现毕的成东东可以照参只要理清,思路行了,况就且有很多还前以过的设计模用和写式的好代码,)概要计设用再天(半有需求了概要,只够不照是抓方),药详细计设用2要天(这步要把一所有的问想题楚清还,尽可能要准的描述出确)来,码用编2(其实1天天够了就,技术经已不问题,是多计划出一天应来付突发事件)测试,用天2(试测应至该占少全部目的项分之四,一过这个不项只目是个D一eom,也简单了太)发布也要用,上半天(管尽我不们去实际布发它,但还是要花点间搞时楚应该清如何做),后最是就项总目和结庆功开会(时间待)。定
二.利器
其“欲公善其事,必先其利器,”项做之前第一步是目前期研.我们要做调华的容这道东东个随处见可我,们调研要的两是个面方:
、1戏游的容:内戏本游很身简单,是有就个几子,曹操格据占其一中个大较的格子然后被几个格,子包,围这格些子状形不一定相同,是挡住了但操曹移的方动向游.戏者需挪要这些动格子终最把操曹动移一到指定个位置的才是过算关更具.体分析我的们在后面需放求分
析和概设要计中讨论。
2、
技储术:备谈技术到,里简这介单一下J绍ME.Ja2v有三个版本,分a是J2别E(M微版)型.JSE(标准版).22JE(E业企).版J2EM是一个标,采用准3结构层设.最低层是计置配层(onCifugrtioan)就也设是备,其上是简表层(层rPfoile)再上是应,用(App层iclaiton.)MID就P是动移息信设备表,简目主前流手机持支MIP1D.,最0新是M的IP2.0,它比D前一个版增本了加游对戏支持的在j,aaxv.icmredotiinol.dci.gaume中提包了一供些来处理游戏类的中技术,如比我们后会用到面Spr的tei,类它用是来转翻片的图权衡.再,笔者三定使用M决DI2.P来0开做.首发需先安装要个J一2M的模拟器,我们E用Su就n司公的TW2K0,.我觉得Sn的东西u最威权当.然也你以使可用Noia.Skieemn或是soMtoolra其他等拟器,模是但们他的JKD不尽同,写出来的相程序移是植较比麻的. Su烦n司的W公K2T.可0以<到 Arefh"=htt:p//eher/"下>tth:p//heer/下<A/>载当,然要成想功下的载前是提要先注你册成S为nu会员的其(这样对你实是好处有的)当下.之来就是按后提照一示一步的步装安安.装了好后,我之们用一"H个lleoWorld 程序开"始你J2ME之的.我旅启动WT们K2.0具集工的中ToolBKa,r后点击Ne然w Porejct按,在弹出钮的入框输中入输Projec tNma为HeelolWorld,MDIel tClssaN ameHe为llo,后点击Cre然ae trPojct,开始e生项成目,具会弹工M出DP配I置表,这简接里生受的默认成(值以还后以可改)点修OK击,工具示提我把们好写J的va源a序程到放 [TW_HKMO]Eap\p\HesllWoroldsr\目c录下.我之编辑们如下代,并码存保在述上录之下,文目名件为Hell.ojvaa。
i
mpor javatxm.crieoditoinm.iletd.*;
imopt rjaav.mixrceodtioni.lcuid*.;
upbic cllassH elloex etnsdMI letD{
privateDis plya ispdly;a
pbluic Hello()
{idpsaly= iDpslya.egtDsilpay(his);t
}pu
bli cvid stoatrApp({)
TexBotxt = ne TextwoBx("eHll",o"Helol,2"6,0)5
d;ipslya.seturreCt(tn)
;}publi
vcoi pduasAep(p{)
}
upbilcv io ddstroyApepb(ooeln uaconndtionial){}
}
保好存了后之,击点Biuld钮按,工会具你编译程序,如为无意再点外Ru击n钮,按会弹一出个机手面,界剩下的不就我教了用(用鼠吧标手对机按键一狂顿点。呵呵)你的,第个J一ME程2序已经OK了.什?你么一点还都没呢(懂是厉害,不懂真能都写J出2EM程序,果来然是手高.我)这主里要是绍 介WK2T0工具.的用使程,序并不目的是不懂的,后话面会有还细详的解说,这里只是带你路.上什么你不懂Ja?v!那也a有关没,后面系我再讲得一点细
。
跳过JM2E我们,来先讲游点的戏理.论具体华到道这个容戏,游主有三个方面,贴要图游戏操.作.逻辑判.这断讲里贴图,讲其两他方放面在概要设和计详
细设计讲.里所谓贴的,图其实是画图,就就在是要显图形的示位置输出一副图上,(要是牵片到扯画就要动麻烦一些可,以使用imTreTsk.ahTera或dRanabnl之e类的技术)这,图片可副以是先事准备的好也以是可时临处的理在.2ME中有J一个Imag e,类门专于用管理片,图它有reactemaIeg(方)法可,以接直读图取片件文J2ME只(持支NGP格的式图片,)也以截取可已的有片图的部分一(这我样可以们把多很片图在一放起然后,张一一张的截来下好处是节,存储省空间和件读取文时,间于对手机这者两都性是的瓶颈)能.JM2还有一E个Grpahci类,s专用门于绘,它有d图rawmaIeg)方(法,可以把副图一片在指定位置的上显出示来,它有还rdwRacet)(法方和s etoColr()方法这两,个方法后面我们在进行游戏操作就会时到用,这先里代交一下.有了片和图绘图的方法还,要知道把需图到谁画上,J2ME提身了供一个Cnvaas类,面意字就思画布是它,一有p个anti)方(用法刷新页面于还,有个repa一ni()方t用法于用p调anti)(方.法听着有糊些涂是,吧不要紧,我来合结具程体序讲解下.为了一后今程编方便,我的创建们两个I类agmesD和ra,wImgeas用于存一些常保值量和片, 图raD主要w是用画图,这于个两的源类代码如。下
Im
gesa类源的码如下代
:pckaga heuaongrrad; o
imortpjavax .mcrieodtioi.lncdu.*i;
mpoirtj vaa.xmicreoitdin.olcuidga.e.*;m
pbulic clss amIgea s//{保常量
存/ 绘图/置位量常
publi static ficna ilnt UIN = T23//;方块单的位长度
pbuli statccif inal nti LEF = 1T;/0画/图左的界顶点边
pbuil ctstacifina lin TtPO 9=//;图的画边界顶上点// 地图位
置量
pu常lic btastc ifial nintW ITDH= 4;// 地图的度宽
pbuicl tatsc iinfa lnit HEIGTH= 5 /;/地图高度的
/ /地图记常量标
pulbi sctticaf ialnby teCAO AOC= (b tey ')';a A <hef="rfil:/e/"曹>ilef:/曹</A>操的地/图标
记pulbi cstaict fina byte MAClAOH= (byt e 'b';)//马的超地标记图
ublip csatti cfial nybte UHANZHGON = Gbyte)( 'c'/;/忠黄地图标的记
pulbi scatic fitalnb yt eGUANUY = (bty) ed'';//关羽的地图记标
upblc itatsc ifialn ybe ZHtNAGEIF =b(ye)t e';//张飞'的地标图记
public staticf ina byle ZtAHYUNO =(yteb)' 'f//;云的赵图地标
pu记bli statci ficnalb te yU Z (b=yte)' g';/卒的/图地标
记pulib stctiacfi anlb te ByANL =K(b yet)'h ';//空的白图标地记
publi cstaic ftnai blyt CUeSROR= byt(e) i';'//标光的图标记地
/ /地图组标记合量
pu常lbics atitc inal byte fLEFD = (Tbte)y' '; 1<Ahr e="ffiel:/组">/fil:/e/组<A>/合图左边形标记
ubpiclst tiac inal byte fUP D (=byet) 2'' <A h;ef="rfie:l//">组ifl://e<组/A合图>上边形标
记uplbics ttiac fnialb ye DLEFtTPU (by=e)t' 3'; A< herf="ifel://"组f>li:e/组</A>/合图左上形标记
/ / 图 常量
p片blui stctaciIm gaei ame_gbsae;/基本图/
public片 tstaciI mag emaige_haZyonu//赵;云图片的
pblui sctatc Iimga ieamg_Caocea;//曹o操图的
p片buil stcatci Iagemim ageH_anughozgn;/黄忠的/片图
pulbcis atit cIamge iagm_Meachao/;/马的超图片
ublpi ctstai Imacgei agemGua_yun;/关羽/图的片
pulbic taticsIm gea imgea_haZnfeig;//飞张的片图pub
lcis atic Imtag eimae_Zgu;//卒的片
p图buicls attc Iiage mimga_Belan;//k白空的图
p片blicu sttia Icamge iame_Frage;m//戏框架游的片
图
pubil Icamegs(){ //造构函数}
p
ublci tstica boolea innt()i {/初/始化游戏中到的用片
tr图 y{
iamge_bsa =eIma gec.eaterIage("m/uarongrohadBI/BTACKp.gn";)
migae_Famre I=mag.eceraeImtge(aimga_beae,s 26, 01,1 54, 717,
Spite.rTRAS_NNNE)O
/;/ S prie类t用是来翻图片的,转是IDM2.P0新新增的加支游持的特性戏
imaegZha_ouyn = mIagec.reteImage(amiae_gase, 0b ,, 0UNIT ,2* UN TI,
Spiter.RATSN_ONNE;
ima)g_eaocao C=I amgec.raeteImge(amige_baas,eU INT 0,,2 * NUIT,
2 * UIN,TS pite.rTARNS_ONN);E
maie_Hgaunzgonhg = Iamg.ecrateImaee(imgge_aaseb ,3* UNIT 0, U,NT,I
2*UN IT,
SripetT.RAS_NONNE;
i)maegM_chaao = Iamgec.reaeImagt(imaegebase_,0 2, * UNT,I NIUT,2
* UNIT,
pSitre.RTNAS_ONNE;)
imgaeG_aunyu = Imag.creaetImaeg(eiagem_base, NUT, 2 * INUT,I
2 U*ITN U,NI,T
Sprit.TeRASNNON_)E;
imag_Zhaegfein Imag=.ceertaImeag(eiamgeb_sae, 3* UINT,2 * UN I,T
NIU, T2 * NUI,T
pSiterT.RANSN_ON);E
imaeg_uZ= Image.c raeetmagI(iemga_base, 0, 4 e *NUT, IUNT, UNIIT,Spri
teT.RASNNO_NE;
)miga_eBlank =Imaeg.crateeImaegim(ag_eabe,s 1* UNIT ,4 * UNT,INIUT
UN,T,I
pSrie.TRANtSNON_);E
re
urntt re;u
c}atch E(xectiopnex )
r{teur falnes
};
}}
Dr
a类w源代的码如:下
pa
cakgehu ranorgoa;d
mportija vaxmicro.deitoinlcdui.*;.
pulibc lcss aDrw {a/
/ 制绘游戏的中片图
pulic brawD(anCvas acnav)s {//造函数构
}
public satitcboo lenap ait(nrapGich g,sb te img,yi n x, titny) {
// 在 图的地x,点y绘制mgi指定图的片
tr y{paint(g
,mg,ix ,, yImgeas.NUT)I;/把/地图xy,转点化画成的绝对坐标布,图绘
reurn ttre;u
}atch (Excepctoine x){
retrunf asl;e
}
}
pulic sbttica oboleanpa it(nrGpahcis ,g bye timg ,intx , nti y, ni unitt){
rt y
sw{itc h(mi)g{
caes ImagseCA.OCAO:/画/操
曹// 变 成绝对坐标并做,调
整.grdwaIage(mmagIe.isamegCa_ocao,I amgse.EFL +Tx * unit,
magesI.TPO + * uyni,t
raGphis.cTPO Gr|phica.sEFTL;
b)erka
;asecI agms.GUeAYUN//画关:羽
gdra.ImagweI(maes.igamgeG_uanuy I,ameg.LsEF T+ x *nuit,
Iagesm.TO P+y *unit,Gra
pichsTOP.| GaphrcsiL.FE);
bTeakr
c;saeIma ge.HsUNAZGHNG:O//黄忠
g.画drwamIgae
(Imaesgi.amgeHuangzh_no,g magesI.LFET+ x u*nt,i
Imgase.TPO + y* nit,u
Grapics.hOT |PGr paich.sLFT);E
rbaek;
ace Isamges.MACAOH:/画/超马
.dgarwIamge(mIags.emigae_achMa,o ImaegsLE.F +Tx * uni,t
Imgae.sTOP+ y*u it,
GnarhpicsTO.P| Graphi s.LcFT)E;
bera;kc
ae Ismaesg.HZAGFENI:/画/飞张
g.darIwameg(Imges.iaame_gZhnafge,iIm aes.gLFE + Tx * nuit,I
mgaseT.O P+y * un i,t
GrpaicshT.P | GOraphiscLE.TF;)
brak;ecas
e Imagse.HAZOUN:/Y/画云赵g.dr
awmaIegIma(gs.emaigeZ_ahouyn I,amesgL.ETF x+ * unit,
ImgaseTO. P + * uyint
,Grpaihsc.TO P| rapGihc.LsEF);T
break;c
saeI mags.eU:Z/画卒/
g.draImawg(Iemaesgi.mag_eu, IZmgae.sELF T+x * uni,tI
maegs.TP O+y * nuti
,GarhicpsTOP |. Gaprics.LhFT);Ebre
ka
;csea Imges.BLaNAK:/画空白
/g.darwImageIm(ags.imege_Blaan, kIameg.LEFTs + *x uint,
mIaes.TOg + P *yu ni,t
rGahips.cTOP |Grap hci.sLETF);break;
caesIm gae.CURsSR:O//画标光
g.darRwet(Icmages.ELFT + x*u int,Im
geasT.OP+ y * u in,tmIgesaUNIT,.magIesU.NIT);
rebak;}
r
etun rtreu
};atcch(E xcepitn ex) {
reotru fnlsae;}
}
}
其Images类存中的绘图是置常量位(也就是在画图时个格子的每长和度相坐标原对点位置要行的调整)进地、位图置量常地(图长的宽),地、图标常量(人记对应物记号),地图的合组标记常(量面会后说),图细片量常存放(物人的图片);rDwa类要主责负制在定位的置画人出物片。图下我来说面 I说amge类中s地的图标常量和地图记合组记标量。常为了够灵能的活排各个安关的面布,我局决们定把游布戏局的信存储在息外文件部中,然后序启程动后把它进来。读这样们制我了一套存储图片定的码代这就是地,标图常量记如上,面Imaeg类中定s义Caoc的ao曹(操)用字a来表示,当符序读到程字符时就能a它将转成化曹操对的应图,并片在到读字a的位置上符进显行。示是但实从际察观中们我现发有的图所片并不是一统大小的有的占4,格个子有,占2的格个,还子的占有1格个,而且即便子同占两个是格的子片还有图横、之分竖有鉴于。此,我们入引了图地合标记常组,量就是在遇说到占有多格子的时候个值1,(也就Ima是egsLE.FT)示表它的边左一是真正的地图个标,值记2(就是I也mgae.sU)P表示的它上边是个真正一地图的标记值1,(就也是I amgseL.ETFP)表U示它左的上是边个一真的地图正标记。图组合地标常量其记就实是用占位置来,的与实显示际关无,后当我们将到移面动时会再来分还析组标记合的使用。
rDaw主类要用是在来画布画上出形图,它两个有apni方法t这,是很见常函数重载。但的程序是中际实上用只到了4参个数pain的t方法,
它直接获得要画片图相的对标坐位置信,然息调后用5参数个pai的n方t法5。个参的p数anti方将法对坐标相位信息转置成绝换位置,对实际并调G用raphcsidr.aImwgea)(法方,将mIaesg的图片中画出了来。种实现这法方的好处灵是活和便于扩展但你需,画图要位置并的能够对不到应格子的相对中坐位标时置你就,可直以调接用个参数的5pait方法n,而必再不去改这修类;各但你加新的图片时,添只要 在Imaesg中加对应的增量,常然向后Dawr中个参5的数aipnt法方加一条添理就处可以了。
到这里,两写天时间的好刚完用
三、。求需析分
这部分
做叫求分需析,听起来挺人吓,其的就实搞是清我楚们要做么什,做成么什样那些,做。下不面引我领着大共同家完成这来一步骤首先,我。要们做一华容个的道游,戏容华道的事这故不再里述了,赘其但中的人在物里这限定一下如上,I面maegs里的定义,我类们这版本只提个曹供(操aCocoa)、关(Guan羽u)y张、(Zh飞anfgie、)赵 (云Zhayuon)、忠黄H(anguhzng)o马、(Macha超)o和卒Z()。u我们这也里限定下一游的戏操作法方:首要通先过向键方择选个要一移的动区(就是一张域片图,)选被择区域的黑色用方框住框选;好按后Fie键r就(确定是)键将块区这选域中,被中的区选用绿色方域框住;然后选框择要移动到区的,域时此用红方框框色住被选的区择域选;要移动到好区域的后之F按ire将要键移动的域(区片)图移要到移到的区域,动去并掉色绿红色和方框的这里。需强调要概念有选择的区域的选、中区域、的移要的区动域和要移动的到域,这四区个概请念读者意区分注当,也然当把这一应部记入分据数典之字。中为使文了章重点突出的介绍如何制作(一个2MEJ收集游戏的,)们我这里定限一些与本主题关无内的暂容去实现不:过关后的动之(画现实时要到 Time用Tras或khTerda,后类续系的列章文中会我细详介动绍方面的画知识)、面之间关的切(换其实简很单,完成当任务后之重再新一边)做暂停、保和存操作等(部这的分容内绍的资料很介多,我也写不什么出新东的来东难免抄袭,故,免此掉。
)
求分需基析完成,离下本午还一段时间,有上马手动用CDASe把从网上找来的BeMP文件调,整大小为其27*1177(的我这图个片是两部分合在一个起,以所比机实手屏幕际大),了存另为 NGP式。格天时半刚刚间,不好搞但楚了要清做东东的还,把用要的图片备准好了
。
、概四设计要
概要
设是从计求分析需过到渡细设详计桥梁和的纽,带这一分部中们我确定目的项现方法和模实的划分。块们我定将决整个项分成目个五部分,分是别前介绍面的I maes、Drag,w有还aM和Dpspi
laybla1和MeDIlet1。Imgase和Drw类a能功简单、构结定,因固此多很项我们都目用这使两各类这里,直接来改改就拿能了,前面已经介用绍这过不里再述。赘aM类p用是从来部文件外入地图读然后保存,在个数一之组中这,分的部容是内们在我本阶段讨的重论点。iDsplyablae1是个继承一C了naav类的画布,它用s处来理序的主要程制控辑逻一部和控制逻辑所分需的助函数辅,要主函数该应包用括来绘图的apnit()函、数来用控操制的作keyrePsed()函s数、用控来选择区制的se域Ratgen()函、数来控制选择要移动到区域用s的tMeveoRange)(函数、用来动移中区域选Mo的ve)函(和判断是数否完任成务wi的n)函(,更具体的分数,我析放到详们设计中细去细化M。IlDt1实e上就际一是个控整个制2ME应用J控制程序,其实也的没有么什特可别,它和的们我面前介的绍"HlleoWor d"程l大同序异,这里小就展开来说不了,后会贴面出的全部它代码。
apM类主应该有一个要Grid][]的[二维数,用来组存华放容道地图,的还该有应个一radema_p(函数用来从)部文外件读地图内容取填充rGdi据结构,数就再要有一个是rawd_ma()p数函用来G把idr数结据构中地的图容内换转图成显示出片来当然(调要Dra用w的pa类nti法方)。说到读取部外文件,笔者知有两道方种法一种是:传的统定义个一nIptSuteamr象,对后用然geClatss(.)gteesouRrecsSAreatm)(方取法得入流,输然再从输后流中入取得部外文件内容的例,如
InptStueam rsi= etgCasls)(ge.teRosurecAstrSea(m"f/lienaem")
;if is !=(n ul)l{
ytb ea =( bte)y is.red()a
}
;
这里请注
意文件中的根路径是名相对便以后的于calss件文置放位的置而不,是源件(jav文a。)二种方法第是使用 noencor.openIntptStreaum法方,然后开的协打议是Rsoeruce,是但这方种笔法反复尝试都没者调能通报告,错的是缺少 误Rsourcee议,估计第二协种方用法J到M2E某的些展扩包类此处不,再究深由于。前以经已过做些类似一容华道样这地图的,里直接给这出Ma类的代码p,面就不再后详细解释ap类M,以便于我了可们以集中力处精理isplDaable1中的逻辑y。ap类M代码的如:
下
pakcge haaurognorad;
i
pmro jata.iv.onIutSprtaem;im
ort javpxa.miroedcitoi.ncldiu.*;
p
buicl clss aMap{
/ /理游处的地图,戏负从外部责文件加载图地据数存,放地图据,并数照地按图据绘数地制图
pulbic btyeGri [d][]//;放存图地据数
pu
lib cMap( {/)构造函/,负数初责始化地图数的存据结构储
hti.Gsri d =nw ebye[tmIaesg.EHGITH][ImaegsWIDT.H];
/ 用/维二数组放存图数据地,注意第维是一竖直标,坐二第是维水平坐标
}
pbluc iin[t] erd_ama(pni it) {
A <rhf=efile:/"从/>fi"el/:从/<A/>外文件加部载地数据,
图并存放存储在构中,返结回是光值点标位的置/
/ 数参是加地图文载的件等级
nit][a n=wein t[2;/]光标/点位置,0是水的位平置,1是竖直位置
tyr{
InptStueamri s= getlCass()g.teResuroeAcstSear(m
/"huroanroag/devlle."ocncat(trSni.galuveO(f)i));if
(i s= !uln) l{fo
r(i t kn =0 k ;<Im geas.HEGIH;T +k+ ){
ofr(i tn = j0;j < Im ges.WIaDT; H+j)+{ th
is.rGd[ki[j]] (by=te)is. eard();if
( t hsi.Gidr[k]j][ = =mIags.eUCSRR O)
{// 断出判标所在位置
a[光] =0j; /光标水/位平置a[
1]= k ;/光标/竖位置直t
hi.sGridk][j] =[ IamesgBL.AKN;/将光标位置/成设空白背
景}
}
is.eard)(;/读取回车(/1)3忽略,
is掉.ead();//读取r换行(10,忽)略掉
}
i.csols(e);
}els {e
// 取读件失败文
[0] =a 1-;
[1] a -=1;}
}
actc h(xEecptin oe) x{
// 打 文开件失败
[0]a -1;
=a[1] =-1; }
erutnra
};
pubil cboolae drnwa_mpaG(rphacs gi) {
/ 调用Dra/w的类静方法态绘制地,
图ry {t
for i(nti = 0;i < mIgaseHE.GHT;Ii+ )+ {
fo r(nt ji= 0 j;< mages.WIDTIH j+;) +{
Dawrp.iat(g,nthis G.id[ir][j,] j ,i)/;绘/地图
制}
}
erturntr e;u}ca
ch t(Exepctino x)e{
reutn farse;l
}
}
}
于像华容对这道的小样地型可以图接直手用来工绘地图的制内容比如:,
fac1
2322bd1e
2gg
g2hig
但是如果,遇到像坦大克或超级玛莉那战的样图,地就必须另外开一个发地图编辑了(我会器在后续文章中介绍用的bv来发一开个图地辑器)。
编
五、细详设计
细设详计程是序发过开中程至关要的重个一节,环在我们好前面在的各个阶段中经搭建好已项了目需的一些工具,现所在个这阶中我段们只需集中精设力好计Dipsayalbel1中逻辑。(两天的时间的然不只当干这点活,还要把他几其个类的设计修一下改)
isDlpaaybl1这个e负类责处理程的控制逻序辑。先首它需要有表示当,关前的变量le面vel表示当、前标位置的光变l量o、表c示移要区动域变的S量eletAcrea、表要移示动的区域的变量M到oevAea、表示r是否有区域被选中而准备已动的变移量Selcete和Mad类p的实例 yMapM然。后我,根据用们按户同的不键处理来不同的消,息们我要实现ekPyrssee()d数,在函数函我中处们理键的上下左右和选中 (按Fie),r这的处理需要我里展来讲开讲,一面后我很会快把一部这详分展细。开
接
下,来是实现aint(p函数),们我打在算这一部分反中的重复画背景、地图选和区域,这个函择数须处必好区域理选被中后之的笔颜画的切换色具,讲就体是在没有中选何区任时域要用黑色画,当笔选重移要的动域时使区用色画绿,当笔选要移择动的到区时改用红域色
画笔(当然附一加张流程是图必可少的)。不
再
面要下现实se的Rtang e)函数和(etMovsReagn()函数e,两这个数用函来设置移要动的域和要区动到的移域区,我的路就思利用前面在Im是geas类中介过绍的地组图标合常量记当,动移到图地合标组记常量,时根据点地图该的中值做逆向变找换到应相的地图标常量,然记后设置应的相loc、eSeclAtera 和oveAMrae其,s中teMvoeRagen)函(还数到用了一个助辅数函iIsnaRne()g,iInRanges)(数函用来是判断给的定是点在已否中的选要动移区域的之内,如果sInianRge)的(返回值是并假该点且的处值不是白就空明要表动到移区域的犯了其他侵以占用的区域被。有了 etRsagne(和)seMoteRangev()函,Move数)函(就水数渠成到,M了ve(o)函将要数移动的域移动区要移到动的到区域在移动过程中,分为步进三行:
一第.制复要动的区移域;
二第.将制出的复移要区动域复到要制动到的移区域这(两步开分行进目的的是止在复制过程防中覆掉要盖动的区域);移
第三.用
sInRangie()判断2给的定是否点要在移动到区的域内,将在不移动到要的区内的域设点成空置白
。
下面我详们的细析分一k下yeressedP)函(数实现的法:方首,k先ePyesrsde)(数要函处理按键上的左右下选和(中iFe)r,处理时在需用C要avan类sg的eGtmeActain函o数将来键的键按转值换成戏的游向,方这可以样高游提的戏兼容性因(为同不的2MJ实现,其方E键向的值键不定一相同的)。
是
接下来分,别处四理方向和个选.当中下向按上,先判断是否时已经选了定要移的动域(区即 his.telsetce是否d为)真如果没有,选中要动区域则让光移向上标移动格,一后调用然esRatgen)函(数设置选择要移动区域,的调再用 eparni()t数函刷屏新,否幕则如果已经中选了要动的区域移就让光标,向移上一动格,后然用setM调ovRaenge)函(数判断是能够向上否动移已中的区域选如果,能动就移调r用eapnit()数刷新屏幕,如函果不能动移就让标光向退下回原来的到置。位
当按向下时下,判先断否已是经定了选要移动区域的,果没有选如中移动要的域则判区当断所处的区域是否为前个两格,如高果是两格个高则向下动移两格,如果一个是高则向下移格一动格,着再调用s接eRatne()函数g设选置择移动要的区域,后调而用rpaient(函数刷)屏幕,否则如果新经已选中要移了动区域,就的光让向下移动标格一,然后调set用oveManRe()g数函断判否能够是向移动已下中的选域,区果如移能就调用r动paiet(n)函数新刷屏,幕如不果移能就让动标向光上退回到来原位的.按下置向时左况情完类似向全的上况情,下按右向情时况全类似完向下的情况,因此这里再赘不述,细情况请参见程序的详源代码。
当按下选中键
时,
先判断是否已经中了选移要的动区域如果已经,中选要移了的区域就动用Mo调e(v)函完数由成移要动的域区到要动移的区域的移到动程过接,着用调reapint)函数(新屏幕,刷后将然已选标记置择成flas,继e续用wi调(n函数判)断否完是成任务了否,如果则还有选没定要移动的区域则判断再前选当区中域是否为白,如空果是不白空就选将标中置成记tre,u然后新刷幕.这里介屏绍一个巧,在技开发序程到遇复杂的逻的辑候,可时以构一造打格函印来数所关将心数的结构打据出来印以调试,利里这我们构就造一个Printrid()G函数,这个数纯粹是函了为试调之用,果这得不效错.至我此完们了编码成前全的工作部。
六编码
.整
项目个共有五个,类四个类有的码前代已面介经绍过了而,是且在其项目他使中用的相过对成熟代码的现.只需在力全去现实Dspliaybael1类.iDslpaybae1l的代码如下:
类
pa
cagke huranogorda
;
imort javax.pmcrieodtioin.cdul.i*;
publi ccass liDplsaably1 eetxned Canvssa miplmeetn CsmomadniLtenes r
{pivare intt] l[o = cewn ni[t2; ]A< rhfe="fil:e/光/>"file://光/<>A的标当位置前0,是水平位置1,是竖位直置pr
ivate in[] telecSAtear= nwein t4][;/被/定选区的,即要移动的区域域
rpivta inte[ ]oveMrAa =e ne int[w4;//要]动移的区域到
pivrat MaepM Mayp= ne wMa p()/;/图类
地rivpaet booeln saeleted;/c/否已是经选中要移动域的区志标pr
iate int levevl;/但/的前面关pub
li Dicplsayblae(1 )//{造函构数
tyr{
bjIin(t;/)/JuildBre定义初的始化函数
catch }(xceEtpon ei {)
e.pinrStacktTacr()e
;}
}
prvate voiid nit_Igae(){m//
初始 游化,戏取地图读,设置择选域区,清空移要动的到域区t
hi.losc = yMapMr.ad_mapethi(sle.vel;//)取地图文读,件返并光标的初始回置位//
0为 平位置,1为水直位置
th竖si.SeectAreal[0] = histloc.[];/0/始化选中初的域
区ths.ieSlcteAer[1] a=t ihs.ocl1][;
tihs.SlectereaA2][ = ;
t1ihsS.eletArcea[] =31;
ths.iMoevAear0[]= -1; /初/化要移动到的区始
域hits.ovMAeer[a1 ] =-;1th
s.MioevAera2] =[ ;0
ths.ioveArMae3] [=0 ;
}
prvaie tviodjbIn i() ttrhwo Esxecptoni{ /J/uiBledr义定的始化初数函
<A refh=f"lie:/初/">ifl:e/初<//>始化A实例量变
hts.seileted =cfa sle;/设/置有被没选的中移动要区域
thisleve. l= 1;I
mgea.isnt();i/初/始化片常图
I量nit_agme(;//初始化)戏游,取读地,图设选择置区域清,空移动到要区的域
setoCmmnadLitsneerthis)(//添;命加令监听这,D是islapabley的例方实法
addomCamnd(nw Ceomamn("dxEt", iComamn.EXITd ,1))//添加;“出退按钮”}
uplbi cvoid ocmmnaAcdtoin(Cmmoad ncmmoan,d Diplsyabale idplsaablye){
/ / 命处理令数函
f (icommadn.egtCmomnadTyp(e )= =Cmmona.dXIE
T){//处理 “退出”
MIleDt1qu.iAtp();p
}
}
rpotceedtvo i dapntiGr(paichs g){ /
/ 画 函图数用,绘制用户画于面即,示显片图勾画,选区中和域要移到动区域
tr的 y{g
d.rwIamag(emagIe.imaseg_rFmae,0 0,,
GrpaihscTOP. |Gr phaci.LsEF);T//背景
画yMaM.drawp_mpa();g//照地图按容内图
画f i th(si.elecstd e
g)se.Ctolr(o,025,0)5;/如/果选中被改,用色画出绿被选的中域区
gd.rwRace(tthis.SlecetAea[0]r* magIs.UNeIT +Im age.LsET,
Fhits.eSlcetrAae1[] *I agmes.UNIT+ Iagmes.TOP,
tis.heSlctAree[a]2* maIgs.eNITU,
his.Seltetcrea[A3]* Im aes.UgNI)T//画;选出区域,择
< hreA=f"ilf:/e如"/fi>le//:<如/>A被选中,果就用绿色
<A refh"f=ile/:否">f/ile//:<否/>A,则使黑色用
g.esCtloor2(5,525,5525;/)/复恢笔画色
if颜(this .seeclte)d /{/已选经了中要移的区动域g
.esColtr(o55, 2,0 525);/改用红色/
g.drawRce(thtis.MovAree[a0 ]* mIgae.UNsT + IIagme.sELF,T
tishM.veoAear[1 *] Iames.gNIU T +mIagseT.PO,
his.MtoevAra[2] e*Im age.UsITN,
htisMo.eAver[3]a* mageI.UsIN)T//;画出要动移的区域到
gs.tCeolr(o552 2,55,25 5);//复画笔恢颜
色}
}catch (xceEtiop nex){
}ysSet.mot.pruitln(Rnuntiem.gtRuntimee()fre.Meeomr(y);)Sy
tes.muotp.rniln(Ruttnim.egeRtuntmi(e)t.tolMeaomyr();
})
pirvaet oiv desRangte( {)/
/ 设置移动后 够能选的中域区
/ 调整当前/标光位到置地图主位置的,即记录人信息的位物
if (置hts.iyMaMpGri.dt[ish.ocl1][]thi[s.lco[0]] = =maIgseD.LEF)T{
hts.ioc[l0 ]= -;1//左向
调e}selif (thisMy.apM.ridGt[ih.lsc[1o][]thi.lsco0[] ==] mIaegsDUP. ){thi
s.olc[1]- = 1;/向上调/
e}le sfi th(i.MsyMap.Gir[dhti.los[1]c][tis.holc[0]]= =Ima esg.LDETFUP) {
tih.losc[0] =-1;// 左向调this
lo.[1c]- 1;/=向上/
调
}hts.SieeclAtre[0]a= htisloc.0][/;/置设标光水平的位置this
.SleecAret[a]1= th i.slc[1]o//;置光设的标直竖置位
/ /设置 标的宽度光
if (tish.ol[0c] 1+ <Im geasW.IDHT )
th{s.SilecteAear[2 = thi]sMyMa.pG.ird[hts.iocl[]1[thi].los[c0 ] +1 !] (=byt)e 1' ?'
1 :2
};else
th{i.sSelctAeear[2 ]= ;1
}
/ / 设光标的高度
i置f this.l(o[1]c+ 1<Im aegsH.IEHG)T {
thsiSel.ectrAea3[]= thi .MsMya.Gprdi[htsilo.c1[] +]1t[hsi.olc[]]0!= by(te)' 2' ?
1: 2 ;
}else {
this.elSetcAea[r] =31 ;
}
}
pr
vait beoolanes etoMeRangev) {(/
/ 设 置要移到的区动域,够移动返回能rtu,e则否回f返alesfo
r( niti = ; i0< t ihsSe.eltAcera[2];i ++ {)
of r(itnj = 0; <jt ishS.eeltAcera3[; j++)] {
fi t(ihs.lc[1o +] >= jmIags.HEIeHTG| |
tihsl.o[0]c + >i=I agmseW.IDH T||(
i!snRInge(ahit.sloc0] [ i+ ,tih.sloc1[]+ ) j&
&tihsMyM.p.aGri[thdsi.olc[] + j][t1hi.lso[0]c +] !=i
Iagme.sBANLK
)) {
rtuern alsef;}
}
}
tishM.overAae[]0 = this.loc0];[
thi.sMvoeAra[e1]= hist.ocl[1];this.M
overea[A2] = hts.iSleetAcra[2]e;
tishM.oevrea[A] 3= htis.SleectArae[3;]r
eurn ttre;u
}
priatv eoblean isoIRnnae(gnitx, int ) y{
// 判 给断的(x定,y)是点在否选区定域之内x,水平坐标,是是y竖坐直标
if(x =>t ish.SeecltreaA[]0& &x <
htsiSe.lectreAa[0 +]th si.eSeltArcea[2] &&
y= t>his.SeelcAter[a1 ]&&
y< tish.elSecArtea[] 1+ thisS.leecAtea[3]r){ ret
runtr u;
}eele {s
retunr afse;l}
}
pri
ave btooean lsInRinage2(nt x, iin t)y {
/ / 判给定断的(,x)y点是在否要动到移区域的内之x,是水坐标,平是竖y直标坐
if( x>= hitsM.voAeer[a]0 &&
x< ths.iMvoeAra[e0 + t]is.MhoevAea[r2 &&
] >= tyis.hoMeAreva[1]& &y < t
hi.MsoverAea[] 1 +hti.Msvoerea[A3) ]{return
tue;r
}lee s{
erurn tafse;l
}}
p
otecrtdevoid k ePryesse(indt eyCkde) {o/
/ 处按下理盘的键件事,是这aCnvsa实例的法
方switch g(tGaeemAtcin(oekyCod))e{//将 按键值的转成化方向量常
asec anCavsU.P/:/上向
if (!his.setleted) {c//还有选定没移要的区域动
if(this.l c[o1 - ]1>= ) 0{//上还向移有动间
空htislo.[c1-];/-向上移动一/下s
tRangee)(//设置光;移动的区标域,该数函将能标移动到地光主图置位r
eainpt);(/重/新图绘}
e}se l{/已/选定了要移动经的区域
fi t(is.holc1][ 1- = 0> {)//向上有还动移间空
hitsl.o[1c--;//向]移上动下
一if(s teMvoeRagen() ){/能/够移,该动函数够设置能移动要到的域
区rpeian();//重t绘新图
}els {//e不能动移
this.olc1[]+;+//退来回
}
}
}
reakb;c
sea anvas.CDWON/:向/下if (
!hitsselec.etd) /{/没还选有定移动要的域
区f it(hislo.[1]c+ 1< I mgaesHE.IGHT )/{向/下有还动空间移
i (fhit.MsMypaGr.i[dtih.soc[l]1 +]1t[hsi.olc0][ =]=Imag
s.eUD){/P该图/片有两个格
高tishl.o[1]c++//;下移向一动下i
f( tihsloc.1][ + <1I amge.sHEIHT)G{/ /下还有向
<A rehf"=ifel/:/移">ife://l移/A<>空动间t
hsi.lco1[]++//;向下动移一下
esRatneg);//设置光标移(的动域区,<
Aher="fifle//该:"f>lie//:<该/>A数函能将光移标动地图到位主置
rpaein(t;/)/重绘图新}e
sel //{下向有没动移间空this
l.c[1o]--/;/退回
来}
el}e {s//该图片只一有个格高
tish.ol[c1+]+//;向下动一下移
etsRnage)(;/设置光/标动移的域区
,< Arhef"f=le://该i>file:"//<该A>函/能将光标移数到地图动主置位
repaitn(;/)/重绘图新
}
}lsee{ }
}else {/已/经选了要移定的动区域
if (hits.ol[c1] +1 <Imaes.HgEIHG) {//T向下还移有空间动th
isl.oc1[]+;+//下向动一下移
if set(oMevanRg())e /{能/够动,该函数能移设够要置移动到的域区
eprain();/t/重新绘图}
lsee {/不能/移动
ths.iol[c1-]-/;/回退来
}
}}
b
rea;k
cas eanvaC.sELF:/T/向
i左f(!t ishs.elcetde){ //还有没选要定移的区动域
i (fhts.ioc[l] -0 >1 0)={ //左向有移还动空间
histlo.c0[]-;/-向/左动移下
一setanReg);/(/设光置移动的区域标,函该数能将标光移到地动图主位置
eprinat(;)/重新/绘图}
}lsee {/已/选经了要定动的区域移
f (tiis.lhoc0[] - 1 =>0) {//向 左还有移空动
间tis.lho[0c]--/;向左/动移下一
i (sfeMotveangeR)( {/)能/够动移该函,能够设数要移动置的区域到
eraipt();/n/重绘新
图e}lse{/ 不能/移动
hist.olc0][+;+/退回/来}
}
}
beakr;
cse aanCas.RIvHT:/G向/右
f i!(thsi.sleeced)t {/还/有没选定要移的动域区
if (hti.lsoc[0 ]+1 < mIages.WDIH) T{/向右/还有移动间空
i fth(siM.yMpaG.ri[tdhsiloc.[1]][ths.iolc0[] + 1 ]==
Imaegs.DELF) {//T该片有图个两宽格
this.loc0][++/;/右向移动一下
i f(tis.hoc[l0 + ] < I1mage.WIDsH)T{// 右还向有
A<h ef="filre://"移fi>l:e//<移A/动空间>
this.ocl[]0+;+/向/右移动下
s一etaRgn(e)/;/设光置移标动区的域,
<A hefr"=fiel/:该">/file//该</A>:函能将光数标动移到图地主位置
reapnit(;/)/新绘图重
els} e{//右向没有移动间空thi
.sol[c0]-;/-/回退来
}
}els {/e该/片只有图个一格宽
hti.los[0c+]+;/向右/移一动下
esRatgne()//设;光标置移动的区,域<A
rhef"=flei:/该/>f"iel//该<:A/>函数能将标移动光到地图位置主
rpaien()t;/重/绘新图
}
}lsee {
}
}lees{// 已选定了要移经的动域区
fi t(ishloc[0.] + 1< Imaeg.WsDTIH){// 向还右有移动空间t
ih.lsc[0]++o;/向/右动移一下
i (setfMoeRvagn(e) {)/能够/移动,该数能函设置要够动移的到域区
rpainte(;/)重新绘/图
}ele {/s不能移/
t动hsiloc[0]-.-//;回退来}
}}bre
a;k
case Canasv.FIRE:
i f(his.seltcted) e{/已/经定选了移动要区的域
Mov()e;/将/要动的区域移移动到刚选的区域中r
epint()a//;新绘图重
this.selecet = faldes//;清除已选定移动区域的标志要
if( win( )){
ySsetm.out.pirnlnt"wi(n")
;
}}lsee {/还没有选/定移要的区动
域if(this .MMyap.rGdit[hsiloc[1.][]hts.lio[c0]] ==
Imgae.sBANK)L /{/要移到的置位是个空白一}
esle /{要移/到的位不是空白
t置ih.ss
elcted e =treu/;设置已选定/要移区域的动志标
}
erpaitn)(;/重/新绘图
}
break;
}}
p
iravet obolae wni()n
{A <reh="ffli://判e>"ilef://判<A>断是/已否经救出曹操
i了f( tihsM.Map.yridGIma[eg.HEIsHTG- 2][maIesg.WIDT H-3 ]== I amesgC.OCAOA) r
tuen true;r
leesr
eurt falnes;
}
pri
atevv od PiirtnGid(Srrtngia) {
<A hefr"=ile:f//">fil打:/e/</打A>印当地前图的内,容用调于
试Sstyemou..tripnln(ta;
f)ro(i t in =; i0< I agmes.HIGHET i++; {)
ofr i(t j n =; 0 j Ima<ges.IWTDH;j +)+{
Ssytm.ouet.pint( (rhcr)ahit.sMyMpaGri.di[][]);j}
Sys
et.out.mrpnilnt"()";}
}
pri
vaet oivdMo v(e {)<
Aref=h"fie:l/将"/f>iel:/将/<A/要>移动区域移动的到刚中选区域
i的 ft(ih.sMovAreea[]0= =-1 || hit.soMvArea[e] 1== 1 -||t
is.ShlectAreea0] ==[ 1- | |tis.SelhetArce[a1] ==- 1) /{/没选有中域区
e}sl {e/已/选中了要经移动的域区和移动要的区域到
byte[][ ]etp = nmweb ye[ttih.SseletAcer[3a]][hts.iSeelcAret[a2]];
A <hrf=ef"lei/:复"/f>il://复<e/>A要制移的动区,因域这为区块域能会可被覆盖掉
fo (inr it 0=;i <thsi.eleScAtea[2r;]i ++) {
for (nitj =0 ; < jhistS.eectAlear3[]; j++){
emtpj[][] i=
thisMy.Map.Gidrt[ish.SleectreAa[1 ]+]j[
hts.ielSectAer[a]0+ i ;
}]
}
< hAref"file://=rintGrPd"i>ifl://erPniGtid</r>A("1") ;/ 调试信/息
<A hefr=fi"el//将:"f>ie://将l/A<>移要的区动移域动到选中的刚域(即要移区动的到区域)
for i(t n = 0i;i < his.tSeelcAtear[2];i++ ){f
or i(ntj =0; j <hist.elSetcrAea[]3; ++j {)thi
s.yMap.MGirdth[siM.veoreaA1] [+ ]j[this
.MoevAre[0] +ai =] etm[j]p[]i
;}
}
<A href"fil=e/:Pr/itGnird"fi>e:l//rinPGrit<d/A>"2()";/ 调/信试
<A息 ref="filh://e将">ilef/:/将/<>要A动的区域中无移用内置成容白空for
(nt ii =; i < 0thi.seSelcAreta[3] i;++){
fr (onitj = 0 j <; hist.SleetcAear2]; [j+)+ {
if (!isIRnagn2eth(si.elSctArea[e0] +j,
t hs.ielecSAter[a1 ] i+) {)//该点是在要移动不到<
Ahr ef="fli:e//">的fiel/:/的</A>区之域,需置内空
hts.iMMyp.aGrd[ihtisSelect.reAa1][+ i]
[ths.SeilctAreea[0]+ j =]I maegsB.LNK;
A}ele {
s}
}}
<Ahr fe"fil=e/:/rinPGtird"f>ile/:P/inrGtrid</>A"3(")//;调试信息
hits.electAreSa[] 0 t=ih.MovesAear0];[//重选置位置中水平的坐标
thi.sSleectrAa[1e = ]hit.soMevAea[1]r/;重/置选中位的置直坐竖标
this.ovMAreae0][ =1;-/清/空移要到动的置
位htsi.MveAoea[1]r = -;//1空清要移动到的置位this.M
oeAreva2[
]= ;0//清要空动到的移置位
tih.MsovereA[3] =a0; /清空/移要动的到位
置}}
}
代码的相
分析,在详细关计设段已经阶讲过代码中,有比相近的较释注,读请者自研行分读.将析部的代全写好码用w,k2t.自0的 Kt带oolbar具建工一个工程立接,来下把不去源文放到件确正置位下,然点击b后ulid,再run点,就完成程了序的写编当.然如有错误还果要改和调修.试
、七测试
为作个真一正的品要经产单体测试、结过合测和试系统测。试于由目项身本简,单而且大部分代已经码是相成对的熟,们跳我过单测体试又由;笔者于的实际环境限,所无搞法Jav到a机手无,法架OT设服务器A因此,们我只也放弃能统测试系那么。让我就们始结开测试吧合。测试前要先出之个一试测样式书,就是也测试计的划。我将们它化简下,只测试如一几下情种:况一、对第各形种状的域的选区和移动择;第二、近临界边区域选择和移的动;三第、同区一的域复反择和反选复动移第四;非法、择和非法移选动有。测了试的目标接,下的来工就是作用wk2.0t带自的Rnu IMP DAplipatcion工进具行测。打试这个开具工加,载haruognoRd的ajd文a,程件就会自序动行运选,择aluch上nIDMet1l个程序这,华容道戏游就跃会屏幕然上,之下来接工作就的左是点三右三点.拇,扭指扭,做来测。测试过程试中现任发何的问题,刻立发一b个gu票给己自然,后就是又痛苦调的和试修bug,如此如此。
正
八.布发
谈到发,布实其个关是键,再的好品不产很好能的布发去出只是也产品而个,已变成商品也就得不不回到.由报笔者于条的所件,限里只这能是纸上兵,不过谈是还希望够能使读对这者过程有所一解(网上的了资料也很)。多
J2ME程序的发一般都是通布OTA过(vOerT e Ahri)你只需要一,有公台I网的主机P一和普个的we通bS rveer就可了(尽以要管求低,但很者笔还没有),这是里我以apac们eh为介例绍下O一AT服的配置,务先是安首好了装paahc服e器务,然后在ocf目n下录找m到imetypes文.,在件文件该中加入如下两行
palipctaoni/ajvaa-rhicv jar e
txte/nvd.un.js2m.aepp-decripsort jda
然重后起paahce务器服就可了以。接来的下作工是就修j改da件文中MIlDe-tJr-aULR:面的参后,将数改它U为R的绝对L径,路即A <reh="hftp:t//***/>htt"p://***/</>Ahuarngrooa.dajr(中**其是你*的名域或PI址地。)下面在就用是ajva手机下载jad文件它会,自动部署应的相ja文件r并加它。剩下的工载作就在和模器拟操作上一样的是了。
、项九目总结
至此,们我经完成已一个了J2EM游戏全的开部发程过,程中涉及到了调序研分析、设、、编计、测试码发和等布方面问题的其,实在实际的作工中有很还多更具为体
的问题,毕竟技只在软术开发件程中过占很据限的有一部,分里限于这篇的幅限制法一一无具体展开。今,笔后计者划写一再篇使用2JME开手发屏机保的文,借章机此向读者会示J2展ME动画术;技后再写然篇一JM2网络应E用的文章,做个一类似开辞心那样的典知识问答戏,游便以读向者展 J2示EM的络网术;待技两这方的面技术待清楚交后,我之引领读将制者作一个大稍些一游的。戏