You are on page 1of 46
LOLCAM ON ‘Trude tién em xin giti loi cam on chan thanh sau sic téi cdc thay cd gido trong trudng Dai hoe Dan Lap Hai Phong néi chung va cic thay 6 gido trong khoa Cong nghé Thong tin ndi riéng da tan tinh giang day, truyén dat cho em nhiing kién thite, kinh nghiém quy bau trong suét théi gian qua. Dic biét em xin giri loi cam on dén thay DS Xuan Toan da tan tinh giup do, true tiép chi bao, hudng din em trong sudt qua trinh kim dé én tt nghiép. Trong théi gian lim viée voi thay, em khdng ngimg tiép thu them nhieu kién thirc bo ich ma cin hoc tip duge tinh thin Lim vigc, thai 46 nghién ciru khoa hoc nghiém tic, higu qua, day 1a nhimg diéu rat cdn thiét cho em trong qua trinh hoc tép va cong tac sau nay. Dang théi xin chan thinh cm on, truéng Dai hoc Dan Lap Hai Phong da tgo moi diéu kign vé co sé vat chat giip em cé mét méi trudng tét dé thue hign dé tai, Sau cing xin giri loi cam on chan thanh ti gia dinh, ban bé di dong vign, déng gop ¥ kién va gitp d& trong qua trinh hoc tap, nghién ctu va hon thinh dé an tét nghiép. Hai Phang, thang 07/2009 Nguyén Thi Thuy Duong MUC LUC LOLCAM ON. Loi Mé Dau. Chuong 1. Co sé ly thuyét 1.1. May do java cho cde dign toe didong.. 1.2. Lap trinh java cho Mobile... 1.2.1. Ngon ngir java 1.3. Gidi thigu vé J2ME. 1.3.1. J2ME(Java 2 Micro Edition): Kign tric cua J2ME 1.3.3 - MIDP(Mobile Information Device Profile) 1.3.4, Nhitng han ché ciia lip trinh di dong. 1.3.5.Tim hiéu vé m6t ting dung trong DTDD. 1.3.5.1.Can ban lip trinh J2ME .. 13.5.2. Céch quan I man hinh cia DTDD :. 1.3.5.3. Kién tric tng quan giao dign ngudi diing trong MIDP. Churong 2: J2ME game API. sesame 1. GameCanvas class.. 2. Layer class... 3. Sprite Class 4, TiledLayer class 5. LayerManager class : 6. Cong eu tap trinh ci a Netbeans 7 7 Chuong 3: Phan Tich va thiét ké Game don gin .. 1. M6 ti ludt choi eiia trd choi... 2. Mét sé ludng quan trong trong chuong trinh. 2.1.Cée lop d6i tugng = 2.2, VisualMIDIet.. Chuong 4: Két qua dat duye 1, Moi trung cai 2. Chay img dung Game . 3. Két lun va huréng phat trign. 3.1. Nhiing két qua dat duge... 3.2. Nhitng han ché, TAL LIEU THAM KHAO.... Loi Mé Dau Ngay nay, sw phat trién vé nhu cau sé hitu cac thiét bj ky thuat sé ma trong dé thiét bj di dong c6 thi phan kha Ién. Sy di hoi vé mau ma, chat lugng dich vu ma dae bigt 14 tinh nang cia chiée dién thoai, céc phn mém tign ich di kem da kéo theo sy phat trién cia cée Hé diéu hanh dé cae nha phat trién img dung c6 thé thy hign cac y trong cia minh.Cac hé diéu hanh phé bién dé nhu: Windows Mobile, Linux Mobile, Symbian.. Cang voi t6c d6 phat trién dé 1 nhing tién bO vugt bac vé t6c do xit ly. Nhi dé lip trinh céc img dung cho loai thiét bj nay ting 1én nhanh chéng, die bigt 14 cae dich vu gid tri gia ting trén mang di dong nhur SMS, RSS, WAP va img dung dich vy game. Qua tim hiéu vé, em thay thi truong Game di dng tai Vigt Nam dang phat trién va cé tiém ning lin; d6 1a Iy do em chon dé tai nay. Hign nhién c6 nhigu han ché cho game hon lA ting dung trén dign thoai béi vi c6 nhigu sy tuong tae gita bin phim, hinh anh, su sinh déng, am thanh va higu img rung. Hon nita, khi lap trinh ban khong chi quan tam dén su khdc nhau cua tig nha sin xudt ma cdn dén sw khdéc nhau ctia cde dong. sn pham ela cing 1 nha sén xudt Mac dit hau hét cdc dign thoai dai méi trén thi truéng hién nay déu hd try MIDP 2.0, tuy nhién néu ban sit dung dign thoai cit hon thi c6 thé né chi hé tro MIDP 1.0 Chuong 1. Co sé ly thuyét. May ito java cho cac dign thoai di dong ‘Dé cé mot chiée dién thoai t6t ludn doi hdi nhimg phan mém cao cAp di kém. Nhung van dé lai dit ra 1d cé qua nhiéu nha sin xudt dign thoai sir dung nhiéu cong nghé khéc nhau. Chinh vi thé, viée tao ra cde img dung chay duge trén tat ca cae dong san pham li mét van dé khong don gidn. Nhung voi su ra déi cita J2ME, nd khong nhiing dap tg dugc cae van dé néu trén ma cdn tao nén tién dé quan trong trong vige phat trién va day manh cdc tng dung cho Mobile. Dée lap vGi phan cing, chay trén moi nén ting khdc nhau cua cée nha san xudt khde nhau, day ciing 1a mot muc tiéu déng thé cling 1a thé manh mi J2ME da mang lai. Khi ma ngudn Java duge bién dich né duge chuyén déi thanh ma bytecode. Ma bytecode nay sau dé duoc chuyén thinh ma ng6n ngit may ctia thiét bj di dOng. Tang may ao Java bao gsm KVM (K Virtual Machine) 14 bG bign dich ma bytecode ¢6 nhigm vu chuyén ma bytecode ciia chuong trinh Java thinh ng6n ngit may dé chay trén thiét bi di dong. Vai trd ciia may fo Java hay KVM 1a dich ma bytecode duge sinh ra tir chung trinh Java da bién dich sang ng6n ngir may. Chinh KVM s® chun hhéa output cia cée chung trinh Java cho eée thiét bj di déng khée nhau e6 thé c6 b9 vi xir IY va tip Iénh khae nhau. Khéng 6 KVM, cde chuong trinh Java phai duge bién dich thinh tap lénh cho mdi thiét bi di dng. Nhw vay lap trinh vién phai xay dyng nhieu dich cho mGi loai thiét bj di dng. Me may Hinh 1 Bigu dign tign trinh xy dung ting dung MIDIet hodn chinh va vai trd cla KVM. 1.2. L§p trinh java cho Mol 1.2.1, Ngén ngir java a. Java la mét ng6n ngit bién dich. Tuy nhién khac véi cic ngén ngit bién dich phd bién khac nhu C/C++, chuong trinh nguén Java khong duge bién dich tryc tiép sang m6t ma may dich cy thé nao ma duge bién dich sang ma may do Java. Ma mé ao duge thyc hién béi may ao Java khi cdn c6 thé duoc thong dich sang hé may cu thé. Uw diém dé nh§n thy cia phwong thie nay la ma dich khong phy ih kha thude phan cig hay hé diéu hanh cu thé do dé dim bao chuyén cia churong trinh, Nhuge diém cia né 1a do phai thye hign trong mdi trudng may ao nén te dG sé cham hon so voi néu duge dich sang ma may va thye hign tre tiep. Mot uu iém quan trong khae cia co ché may do 14 né cho phép kiém soat su truy cp dén cac tai nguyén hé théng. b.Qua trinh phat trién cia Java ¢. So sénh cong nghé Java va Microsoft.Net 1.3. Gidi thigu vé J2ME 1.3.1, J2ME(Java 2 Micro E J2ME duge phat trién tir kién tric Java Card, Embeded Java va Personal Java cia phién ban Java 1.1. Dén su ra dai ciia Java 2 thi Sun quyét dinh thay thé Personal Java va duoc goi vi tén méi 1a Java 2 Micro Edition, hay viét tit 1a J2ME. Dang voi tén goi, J2ME 1a nén tang cho cac thiét bj ¢6 tinh chat nhé, gon. Java ban dau duge thiét ké danh cho cic may v i nguyén 6 nhé han ché, Thi truémg cia JZME duge mé rng ra cho nhiéu ching logi hu: thé cd nbn nhur Java Card lo: ~ May dign thoai di dng - May PDA (Personal Digital Assistant- thiét bj tro gitip cé nhan ) - Céc hp diéu khién danh cho tivi thiét bj giai tri gia dung ‘Cac bd céng cu phat trién JZ2ME hau nhu duge cung cdp mién phi. Day sé la mot thudn Igi cho nhitng ngudi moi bat dau voi J2ME. Mét s6 tinh nang wu viét ctia J2ME: Cung cap ni dung linh déng, bao. mit, tuong thich nén tang, tinh nang nang cao.truy cap ngoai tuyén, va mang tinh nang manh mé ciia mot ngén ngét lp trinh hudng d6i tugng hign dai, 13.2. Kién trie cia J2ME dea? Edition Java? (J26E) Standard ion [ wor | | Prote Let (1286) co a2 Mier Editon (/2ME) Hinh 2 Kién tric cua J2ME Kién tric J2ME bao gom cdc thinh phan: Caw hink (configuration), hign trang (profile), cde géi tu} chon (optional package) cho vige xay dyng hoan thign méi trung thue thi Java ma dap img cdc yéu cdu cho mt pham vi lin cia cc thiét bi va thi trudmg dich. Céic nha sin xudt thiét bi phat trién cic tinh nang mdi trong cée thiét bj cita ho hode cung ep ede dich vy, tng dung. Cac c4u hinh cé thé duge mé rong véi cdc thir vién bd sung cho ting thiét bi, Cau hinh: C4u hinh bao gdm may ao Java va mét tap hgp rit nhé céc ham APL theo dac ta cla mét loai thiét bj nhat dinh, Hink trang: é cung cip mét méi truéng thu thi hoan thign tai cdc loai thiét bi jue két nhat dinh, cae edu hinh phi voi mét tp cdc API mite cao hon. G6i tu chon: Nén tang J2ME cé thé duge mé rong hon nita bang cae géi tly chon vi cdu hinh CLDC, CDC, va cac hinh trang tuwong tg. Cac géi tuy chon dura ra cée chudn cho vige sit dung cd céng nghé da c6 vi cong nghé dang duge sit dung rong rii 14 Bluetooth, dich vu Web, nhiin tin khong day, da phuong tign, va két néi co sé dit ligu. Cac nha fin xudt thiét bi cé thé kém theo cc géi ty chon dé thc day cac tinh nang cita cdc thiét bi. 1.3.3 - MIDP(Mobile Information Device Profile) ‘Tang J2ME cao nhdt la ting hign trang va mye dich ctia n6 1a dinh nghia céc API cho céc thiét bj di dng. Mét thiét bi di dng c6 thé hd troy nhiéu hign trang. Mét hién trang 6 thé ap dat thém céc gidi han trén cdc logi thiét bi di dng (nhu nhiéu b6 nhé hon hay 46 phan giai man hinh cao hon). Hign trang Ia tp cde API hitu dung hon cho cae img dung ey thé, Lap trinh vién c6 thé viét mét ang dung cho mét hién trang cu thé va khéng cn quan tam dén né chay trén thiét bi nao. Hign tai hign trang duge céng bé 1&8 MIDP (Mobile Information Profile) v6i die ti JSR - 37. C6 22 cng ty 1a thanh vin ciia nhém chuyén gia tao ra chun MIDP. MIDP cung cap cdc API cho phép thay déi trang thai chu ky séng tg dung, dé hoa (mire cao va mite thip), tayén doan, timer, luu tri bén viing (persistent storage), va mang. No khéng dinh nghia cach ma ing dung duge nap trong th bj di dong, D6 1a trich nhigm cua nha san xudt. N6 cing khéng dinh nghia bat ky loai mé hinh bao mat end-to- end nao, vén can thiét cho tng dung kinh doanh nin sé thé tin dung cia ngudi ding. N6 cing khéng bat bude nha san xuat cach ma lop MIDP duge thye hign, MIDP 1a m6t Profile duge dinh nghia dinh riéng cho ede thiét bi di déng va la thinh phan chinh trong J2ME, né cung cdp cic chite nang co ban cho hau hét cdc dong thiét bi di dgng phé bién nhdt hign nay nh cic may ign thogi di dng va cde may PDA. Cac ting dung J2ME duge goi la MIDlet (Mobile Information Device applet). > Ung dung cia MIDP voi di dong Do MIDP 1a chudn phat trién ing dung Java én cde dign thoai Symbian nén hién nay,co rit nhiéu hang dign thoai lén sir dung céng nghé J2ME trén nén Symbian e6 hé tro MIDP. Vio thang 11 nam 2003, Sun da tung ra phién ban moi nhat li MIDP 2.0 vGi hang logt tinh naing duge cung cp so véi MIDP 1.0 nhwr : nang cao tinh bao mat, hd trg Form tét hon, chyp anh RGB...v.v. Cac thiét bi nhim téi J2ME: Cac hang Di thogi di dong nh : NOKIA, SAMSUNG, MOTOROLA, SIEEMS, TOSIBA, SHARP... SAMSUNG & OF ee SGH-730 SGH-D500 SGH-E630 10 NOKIA N6230 N7610 N6600 1.3.4, Nhéng han ché ciia Ip trinh di dong Sur khde nhau Ién nhat git Kip trinh cho di ding so véi lp trinh cho PC I ta phai quan tim 1én dén bd nhé, kich the man hinh hay thém chi 1a mau sic cia thiét bi. Nhimg van dé do lai khéng quan trong bac nhit déi vai PC. Hon thé nita ta con phai quan tim dén sy khdc nhau giita cic haing sin xudt cing nhu dong may di dOng cua hang. Cae dong may khae nhau sé 6 Ih, kich thuéc, mau sic man hinh va ca hé trg cho lap trinh cing khéc nhau.Céc loai b6 nhé Bé nhé diing trong sudt qué trinh chay va duge gidi phéng khi img dung két thuc. vige hay edn goi 1a heap memory li phan bo nhé duge Ung dung danh cho di thé chay durge. Mét loai b nhé khic ding dé Iuu tri 14 6G nhé RMS 1& phai c6 b6 nhé nhé hon ving nh ndy méi cé (Record Management System). RMS 1a b6 nhé ma théng tin van con duge hu khi ta tit ting dung. Lay mot vi du trong game ta ding b6 nhé nay dé hu top nhitng ngudi choi cao diém nhat. Cac théng tin dé van dugc cp nhat cho lan choi tiép theo. 1.3.5.Tim hiéu vé mot tng dung trong DTDD. 13: -Can ban lip trinh J2ME, 1 chuong trinh trén mobile duge goi la 1 MIDLet . Chuong trinh niy duge dong géi vao mt lép ké thira tir bp c6 sn ciia JAVA Ta MIDLET ul { public MIDletExample() () 6 public void startlgg()() yublic void GRUBER public void (} @ ‘Thanh phan Import: Khai bao sir dung cac lép cin thiét trong thu vign MIDP va CLDC.Ham khai tg0 MIDIetExample( ): Ham khoi tao durge thyc hign mét lin khi MIDIet khéi dong. startApp( ): phwong thie nay duge goi boi bé quan ly img dung khi khéi tgo MIDlet va méi khi MIDlet tré vé tir trang thai paused. pauseApp( ) phuong thie nay goi bd quan ly img dung méi khi tng. dung can tam dimg img dung dang thy thi. Khi str dung pauseApp ta giai phéng mét phan tdi nguyén ciia MIDlet dé dinh b6 nhé cho céc ting dung khide. destroyApp( ): Phuong thire nay duoc ding khi thoat khoi MIDlet Trude dé phai giai phong hoan toan bd nhé durge lay boi MIDIet.Cé chai ¥ 1 12 tit ca cde tng dung MIDIet duge viét ra déu ké thira tir lop MIDIet c6 sin trong MIDP. Lép MIDIet nam trong goi: javax.microedition.midlet.* . Lop nay quan ly chu ki séng ciia cac img dung MIDIet. Hinh 3 chu ki sng ctia cac img dung MIDlet Khi ngudi ding yéu ciu khoi dong tg dung MIDIet, bd quan ly img. dung sé thy thi MIDIet (théng qua lép MIDlet). Khi tmg dung thu thi, né s8 durge xem la dang 6 trang thai tam dig. BO quan ly mg dung goi ham tao va ham startApp(). Ham startApp() c6 thé duge goi nhiéu lan trong suét chu ky séng cua ting dung. Ham destroyApp() chi e6 thé goi tir trang thai hoat déng hay tam dig. Lap trinh vién cing c6 thé diéu khién trang thai ctia MIDlet. Cac phuong thitc ding dé diéu khién céc trang thai cia MIDIet: resumeRequest(): Yéu cdu vio ché d6 hoat dong. Vi du: Khi MIDlet tam dimg, va mét su kién timer xudt hign. notifyPaused(): Cho biét MIDlet tu nguyén chuyén sang trang thai tam dimg Vi dy: Khi dgi mot su kign timer. notifyDestroyed(): Sin sing dé huy Vi du: Xi ly nat nhan Exit Lap trinh vién c6 thé yéu cu tam ding MIDIet trong khi dgi mot sy kign timer hét han, Trong trudmg hgp nay, phuong thite notifyPaused() s& duge ding dé 13 yéu cdu b6 quan ly tng dung chuyén tg dung sang trang thai tam dimg. 1.3 Tip tin JAR Céc lp da bién dich cia ting dung MIDIet duge ding goi trong mot tp tin JAR (Java Archive File). Day chinh 1a tip tin JAR duge download xudng dién thoai di dng. Tap tin JAR chita tat ca ede tap tin class tir mOt hay nhiéu MIDIet, cling nhu cdc tai nguyén can thiét. Hién tai, MIDP inh dang hinh .png (Portable Network Graphics). Tap tin JAR cling chita tp tin ké khai (manifest file) m6 ti ndi dung cita MIDlet cho bo chi hd tro quan Iy ting dung. No cing phai chira ede tap tin dir ligu ma MIDIet en, Tap tin JAR 1a toan bd mg dung MIDlet. MIDlet cé thé load va trigu goi cic phuong thite tir bat ky lép nao trong tap tin JAR, trong MIDP, hay CLDC. Né khéng thé truy xudt cde lap khéng phai 1d b6 phdn cia tp tin JAR hay ving ding chung cua thiét bi di dong, nh cia BTDD : ign thoai di dng khOng quan ly trye tiép trén man hin nhur may tinh 1.3.5.2. Cach quan ly man ma phai thong qua m6t déi tugng Display duge lay qua tir cau Kénh : Display.getDisplay(this) Hinh $ quan ly man hinh cia DTD 14 1.3.5.3. Kién tric tong quan giao dign ngwoi ding trong MIDP. MIDP bao gém cac thanh phan giao dién va duge dinh nghia trong géi ledui chinh i LCD UI (liquid crystal display user interface — giao dign nguoi ding cho man hinh tinh thé javax.microedition.ledui, Chit ¥ tir viet long) Dd hoa trong J2ME Cée Ip giao dign trong g6i javax.microedition.ledui cia MIDP ¢6 thé duge chia thinh 2 nhém 1a nhém giao dién cAp cao va nhém giao dién cap thdp. Nhimg lép trong nhém cap cao thich hyp khi phat trién cac img dung MIDlet ¢6 kha nang chay trén tét c4 ede thiét bi, béi vi cdc 16p cp cao nay khéng cung edp kha nding quan ly vige hién thj trén man hinh, nghia la viée quyét dinh hién thj cde thinh phin giao dign niy 1a do dign thogi quan ly sao cho phi hgp nhat véi dac thi ctia ting dign thoai. Hinh 6 Dd hoa mire cao Db hoa mite cao La cic déi tugng ctia lop Screen a. TextBox Lop TextBox cho phép nguoi ding nhap va soan thio van ban. Lap trinh vién c6 thé dinh nghia sé ky ty i da, gidi han loai dit ligu nhap (6 hoc, mat khdu, email...) va higu chinh i dung ciia textbox. Kich thude that sw ctia textbox e6 thé nh hon yéu céu khi thye hign thy té (do gidi han ctia thiét bj). Kich thude thét su cia textbox c6 thé Kéy bing phuong thie getMaxSize(). 15 b. Form Form 1a lép hitu dung nhit cua cae l6p Screen bai vi né cho phép é é li DateField, chia nhigu item trén cing mét min hinh, Cée item ¢6 1 TextField, Imageltem, Textltem, ChoiceGroup. ¢. List L6p List 14 m6t Sereen chita danh sich ede Iya chon ching hgn nh cae radio button, Ngudi ding c6 thé tuong tic vdi list va chon mOt hay nhiéu item. d. Alert Alert hién thi mét man hinh pop-up trong mét khoang thai gian, Noi chung né ding dé cinh béo hay béo 131, Thi gian hién thi c6 thé durge thiét Lap boi tng dung. Alert ¢6 thé duge gin ede kiéu khde nhau (alarm, confirmation, error, info, warning), cac 4m thanh tuong img s@ duge phat ra, ¢. Form va cdc Form Item Sit dung form cho phép nhiéu item khéc nhau trong cing mt man hinh, Lap trinh vién khOng diéu khién sy sip xép cac item trén man hinh. Sau khi da dinh nghia déi trong Form, sau dé sé thém vao cac item. Con l6p cp thdp thi thich hop cho nhimg img dung MIDlet cin diéu khién chinh xdc vigc hién thi cing nhu toa d6 cia cdc thanh phan giao dign. Tat nhién néu ta diéu kién sfu vao viéc hién thj va toa d6 thi tg dung sé bot di tinh kha chuyén, tie 1a ting dung s@ chay duge trén mot it thiét bi ma théi, Thudng thi khi ding cdc lp cap thap nay thi ban can viét lai tng. dung cho timg di dign thogi. Hinh vé sau cho thy 2 lép giao dién cp thip 1a Canvas va Graphics Hinh 7 Canvas va Graphies 16 ‘Cho di ta str dung giao dign cdp cao hay cp thap thi tit ca cdc thanh phan giao dién déu phai ké thira tir giao tiép tén 14 Displayable. Mét lop Displayable c6 thé e6 cae thinh phn nhur tiéu dé, cde Iénh va cde muc giao dign khée. Vi vay nén 2 lép Sereen va Canvas déu ké thita giao tiép Displayable nhu trong hinh vé sau (cha ¥ 14 Isp Graphies khong ké thira giao tiép Displayable) Hin Dé hoa mite thap (Lop Canvas) 6 hoa mite thip a 16p con cia 6p Canvas. Lép niy cung cdp céc phuong thire d3 hoa cho phép vé 1én min hinh hay vao mét b§ dém hinh cing v6i cée phurong thie xir ly sw kign ban phim, Lép nay ding cho cic eng dung tro choi cin diéu khién nhiéu vé man hinh, Voi phién bin MIDP 2.0, cdng vige lap trinh di dng néi chung va lip trinh game ndi riéng sé dé ding hon rit nhiéu. * Lép GameCanvas méi e6 thé ve lén man hinh va dip ting Iai di Higu nhap trong pl nhdp ligu cia hé thong. GameCanvyas 14 mét Canvas cé thém mot sé kha than ctia vong lap game, thay vi dya vio ede thread ve va nang; né cung cap cac phuong thirc dé vé titc thoi va kiém tra trang thai ban phim thiét bi, * MOt API ding juan ly layer manh va linh hoat gidp vige xay dung cae cinh game phite tap mét cach higu qua hom Sit dung céc Iudng (thread) xir ly céc déi tuong trong mét img dung game chay song song véi nhau: vi du nhu cdc luéng vé dé hoa trong mot 7 déi tugng dé hoa,ludng 4m thanh trong déi tuong am thanh ,...s@ cing duge chay trong cing mét thoi diém khi bat dau tro choi trd choi Ngoai ra, viée sir dung da luéng (Multithreading) nay giap cho tai nguyén han ché cia thiét bj di dong duge sir dung mét each tich eye hon. 18 Chwong 2: J2ME game API Phan mt da noi tong quan vé Ip trinh cho di dong, sau day em xin duge gidi thigu vé mot mang kién thite rat thi vj cia J2ME la Game API. Phan hai gdm hai muc: + Gidi thigu ly thuyét Game API cia J2ME + Cong cu lap trinh Java Game eiia Netbeans 1, J2MEgame APT 1. Lop Canvas 2. Lép Layer 3. Lép Sprite 4, Lép TiledLayer Lép LayerManager ‘Thue té ta hoan ton c6 thé lim game J2ME véi kién thite vé lép trinh jong J2ME, va dac biét 1a thanh phan giao dign mite thdp Canvas cua n6. Lép Canvas cho phép ta vé 1én man hinh dign thogi, né hd tre ve cde tugng nhu duémg thing, dudng tron, 16 mau mot ving man hinh, hay c6 the copy mét ving man hinh vio ving dém va dat né vio chd khée .... Véi nhimg edng cu nhur thé ta e6 thé Lam duge mét chong trink game tir dom gin dén phite tap. Tuy nhién thoi gian lam game sé rt tén kém va khéi lugng cong viée lién quan dén vé giao dién 1a rat 1on.Qua tim hiéu em thay J2ME c6 mot g6i hd try t6t cho lap trinh game goi 18 chung 1a Game API Cée lap ctia né nim trong javax.microedition.ledui. game. M6t sO lép quan trong ciia né nhw: GameCanvas, Layer, Sprites, TiledLayer, vi LayerManager. + GameCanvas: ké thita tir lop Canvas, c6 thé coi day 1A man hinh dién thoai + Layer: it duge sit dung truc tiép nhumg duge két béi 1ép Sprite va TiledLayer. + Sprites: lép dé tao cde nhiin vat va cic dbi wrong chuyén dong. + TiledLayer: lop dé tao cac khung canh khic nhau cita game va tgo ban dé. 19 + LayerManager: Ip quan ly cée Sprites va cée TiledLayer 1, GameCanvas class GameCanvas két thira eéc thude tinh va phusong thire cita lp Canvas va c6 thém mét s6 phuong thie quan trong gitip cho vige gidm thoi gian tinh toan nhé dé ting téc dd refresh cla man hinh, No od thém hai mé rng so voi Canvas la Polling Input ~ huge b6 diu vio vi Frame Buffer ~ ding ving dém dé chia ngi dung Canvas Lép GameCanvas: khong phai dgi dé thyc hign keyPressed() vi ta c6 phuong thire getKeysState(). C6 ky thuat goi li “double buffering”ban cé thé thye hign vé o “off-screen buffer” khi dé vige copy tir buffer téi cac canvas nhanh hon nhiéu, Co thé sir dung Graphic ttr goi him getGraphies(). flushGraphics() dé gidi phong Graphics. 2. Layer class Trude ki {én hai lép quan trong tiép theo 1a Sprite va TiledLayer ta phai néi vé khdi niém Layer. Lop layer cia Game API rat don gian nhung né durge ké thira boi hai Iép Sprite va TiledLayer. Layer dure hiéu la mét khéi hinh anh trong Game. Tit ca cite hinh anh cé thé hign duge tén man hinh déu ké thira l6p ni hinh, . Cac Layer I nhiing anh ma ta e6 thé vé lén man di, di chuyén hay la xAp xép chiing theo d@ xau (tite 1a khi nhiéu nh chéng chéo lén nhau thi anh ¢6 d6 sau 1én hon sé bi anh e6 d6 xdu nho hon che khudt). Cae phurong thite eta lbp Layer Ia Public void setPosition(int x, int yy: Git vi tri ca Layer Public void Move (int dx, int dy): dich chuyén Layer Public void setVisible (boolean visible): thiét lap hién/an LayerCéc phuong thite nay déu duge ké thita boi cac lop Sprite va TiledLayer. 3. Sprite Class Trong Game thi dé hoa lam nén thanh céng rit Idn. Hau hét cae déi tugng 43 hoa duge phan logi nhu cde dang die bigt cia dB hoa goi la cic 20 Sprite. Mét Sprite c6 thé 1a bullet, monster, enemies, keys vi doors va mét vai cai gi dé. Cac Sprite duge nhin nhiéu lén ki cée graphic dong, cae graphic dong nay duge tgo nén tir cling mot Sprite nhung nhin tir eée gée Khéc nhau. Bay 1a mot 6 Sprite: Bee AdANKA Hin 9 Sprite Constructor C6 3 ham khdi tao vei lop Sprite Sprite (Image image); (! Tao ra khung Sprite don, khOng dong Sprite (Sprite sprite); /[Tgo ra Sprite méi tie mt Sprite Sprite (Image image,int frameWidth, int frameHeight); |"Ta0 ra Sprite dong v6i tir2 frame tré 1én, frameWidth va frameHeight 1a d6 rng va chiéu cao cita 1 Sprite Ta c6 téng d6 rong li 160 pixels, dO rng ciia 1 frame 1a 32 pixels, chidu cao la 32pixels. Ta 66 frameWidth va frameHeight la giéng nhau cho 1b6 Sprite (cée Sprite khae thi khéc nhau). Cac Graphic thi bao gém cic Sprite ma 6 rong va chiéu cao la hang 86, vi sé cac pixel bit... thi 28=256, 216=65536... mau quan dén sé mau; néu Ipixel la 8-bit, 16-bit, 24- Animation — chuyén ddng: Tao hinh anh chuyén d§ng cia nhan vat bing cach gép ndi lién tiép cdc hinh anh gan gidng nhau. Vi du trong game em 1am e6 sit dung hinh anh nhan vét (Player) va chuyén dong. ‘Transforms ~ quay g6e dd: Sprite cho phép chuyén xoay hinh anh di mot goc nao dé bing phuong thire public void setTransform(int transform): C6 8 kiéu xoay: TRANS_NONE, twang img v6i 0 chiéu kim déng hd TRANS_ROT90, twong ting v6i 90 chiéu kim ding hd TRANS_ROT180, twong tng voi 180 chiéu kim déng hd TRANS_ROT270, twong img véi 270 chiéu kim dong ho TRANS_MIRROR, tuwong (mg véi 0 xoay nguge theo guong, ri xoay mét géc nao dé theo chiéu kim déng hd. TRANS_MIRROR_ROT9O, twang ting voi 90 TRANS_MIRROR_ROTI80, wong img voi 180 TRANS_MIRROR_ROT270: tuong itng véi 270 + Image & day 1 nh lén (kich thurée 64) + FrameWidth la chiéu rong ctia méi anh nho (16) + FrameHeight la chiéu cao ciia mdi anh nho (16) public Sprite(Image image, int feameWidth, int frameHeight); bay gid néu muén cé anh chuyén d6ng ta chi tao mét mang cé s6 phan ti 1a mang Li chi s6 ctia cde anh nhd s6 anh dé tao chuyén dong, cdc gid tri cn ghép tuong tng. Ta goi chudi dé la Frame Sequences. Vi dy dé tao mét Sprite chuyén dong gdm 16 anh nho tir anh Ién trén dé tao thanh mét chudi hinh anh chuyén dong quay tron nguge chiéu kim dong ho, true hét ta phai tao ra déi tugng sprite Sprite sprite = new Sprite (playerlmage, 16, 16); Sau do tao ra mang cac chi s6 thé hién cho mét chudi céc frames nhur sau: Int{ ] frameSequence = { 0, 1, 2, Néu muén cho Sprite hién thj mét frame cy thé ta ding phuong thite: Sprite.setFrame(int framelndex): Ta c6 thé dinh huréng chuyén dong bing cic phuong thire: public void nextFrame() public void prevFrame() 4, TiledLayer class Méi lap TiledLayer c6 mét anh, anh nay duge chia nhé thinh cic tile theo quy tic 6 trén, mét TiledLayer né gdm mét mang céc tile dat theo thir ty nhat dinh, Anh cua TiledLayer duge phan chia ra nhiéu tiles vi duge danh sé, Mét bin dé c6 thé duge tao nén tir mét TiledLayer hay nhiéu TiledLayer Him tao cita kip TiledLayer nur sau: public TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight); * Colums la sé cét cia TiledLayer, hay sé tiles trong mt hang + Rows la sé hing cia TiledLayer, hay :s trong mét cot + Image 14 anh cia TiledLayer * tileWidth va tileHeight cho biét kich thuée cia mét tile M6t TiledLayer Vi du: hinh duéi duoc chia thinh 6 viing, ta chi ra céic Tiled cé 32x32 pixel. 16t Ludi cac 6 chia ra tir 1 nh, Tao nén 1 l6p TiledLayer, méi 1 tile nay duge danh sé (bat dau tir 1), Danh 86 tir trai sang phai rdi tir trén xudng dudi. ot yee se 6 ae Ta cling c6 thé dat mot mién chit nhat trong TiledLayer bing mét tile bang phuong thi: public void fillCells(int col, int row, int numCols, int numRows, int tileIndex); * col, row, numCols, nunRows xe dinh mién chit nhat can phi tile + tilelndex 1a chi s6 cila tile dem pha. Tile Animation - tile dong 23 Tile phin én duge diing dé tao ra ede d6i tuong tinh nhw bin dd, tuy nhién dé tao ra mot khung nén thi vi ta nén €6 céc tile ding (cde tile nay don gin 1a céc tiles thay ddi hinh anh ctia né sau mot chu ki vé Igi min hinh), Cac tile dong la nhitng d6i tugng hogt dong khong chu sy digu khién cia ngudi choi ma hoat dng theo chu ki, Cée bude dé tgo mot tile dong nhur sau:Dé xéc dinh tile ndo 18 tile dong trong m6t TiledLayer ta ding phuong thite: public int createAnimatedTile(int staticTiletndex): staticTilelndex : 1a chi sé cia tile trong TiledLayer Sau méi lan vé lai man hinh, céc TiledLayer durgc vé lai va do dé céc tile i ciia né ciing duge cp nhat theo. Dé thay déi vi tri cita mét tile véi mot tile 6 vi tri khac ta ding phuong thite: public void setAnimatedTile(int animatedTileIndex, int staticTilelndex). Trong phuong thitc trén thi tile ¢6 chi sé animatedTileIndex sé duge cap nhat hinh anh ctia tile ¢6 chi sé staticTileIndex. 5, LayerManager class Lép nay quan I tri dé vé cc déi tugng lén man hinh bang phuong thite paint(), ta tao mét ca cdc déi tong khac, thay vi true tiép xde dinh vi déi tugng LayerManager va cho vao né tat ca cac déi tugng bang phuong thite: public void append(Layer 1): ‘D6i tuyng append c6 thé 1a di tugng Layer hodc nhitng déi wgng cia lép ké thi tir Layer nhur Sprite va TiledLayer. G day ta van ve timg d6i tugng Ién man hinh nhung khde so véi vé tryc tiép lén man hinh & ché cae qua trinh vé duoc thau tém lai chi trong déi trong LayerManager ma khong vé rdi rac timg thinh phan mét. Viée vé tat ca cée déi tugng déng loat niu vay sé tt cho tinh théng nhat xuat hign ctia cde d6i tugng khée nhau trén man hinh.Lép LayerManager cung cdp cae phurong thite quan ly Layer nhu: + insert (Layer I, int index) + remove (Layer I) + getLayerAt (int index) Phuong thite thir nhat chén mgt Layer vio lép @ vj tri cé chiéu xéu. index. 6 day mét layer chén vio cé tinh dén chiéu sau ma né duge dat (layer 6 chiéu sau lén hon sé bj che béi nhiing layer cé chiéu xu nhé hon). Do 46. vige dt mt layer lén man hinh khi sit dung LayerManager s® khéng phy thude vao thir ur viét code, ma phy thuge vao bién index ma truyén vao. 6. Cong cy lip trinh ciia Netbeans NetBean IDE 1i mt “méi truéng phat trién tich hgp” (Integrated Development Environment) kiéu nhur Visual Studio cit Microsoft va duge xem 1d mt mOt bd ing dung "must-download” danh cho cée nha phat trién phan mém. ‘NetBean IDE hé trg nhiéu hé diéu hanh khac nhau nhur Windows, Mac, Linux, va Solaris, NetBean bao gdm mot IDE ma ngudn mé va mot nén tang ng dung cho phép nha phat trién nhanh chéng tao nén cdc éing dung dinh cho web, doanh nghiép, desktop va thiét bj di dong bang cac ngén ngit lip trinh Java, C/C++, JavaScript, Ruby, Groovy, va PHP. NetBean IDE hd try hai cong cu thiét ké game 1 GameDesign va VisualMidlet. Trong d6 GameDesign lam phan giao dign game con phiin VisualM IDIet lam phan menu cho game. Sau khi tim hiéu vé ly thuyét GAME API ta dén v6i viée thue hanh hing kién thire dé trén ngén ngit va cong cu cy thé, Day 1a khung man hinh GameDesign cia Netbeans. Hie E6t_ Jen Nowe Souce Reactor Guld fun profle Vergonng oo! Window Heb SEES KODE Co T HDB oO [BMazecarreDesign ja + Mee source [Game uléer| Game e...[=) Scenes: create eene Tiled Layers: crest td oer Sprites: reste spree inh 10 GameDesign ciia Netbeans 26 fue Tew: 259% Thehegh: 25 pe Hinh 11 Hinh trén la tao ra Sprite voi Image duke.png. Cé thé ty diéu chinh 46 rong 49 dai ciia Frame Te Est Mew Newte gure ieacor Bil Vernon H Set X89 mT BD HO 2 ae mae sare [Gomemilae) aes GS | A/A/|ALALA Teco @ Wx nese Hinh 12 Tao ra Sprite 27 Tao anh chuyén dong ctia nhén vat. S R&A (0/@[o) —= Hinh 13 é tg0 mot nhan vit chuyén dng ta chi cn kéo nhiing tile trén vio cée 6 tuong ting dé tgo thanh mét chudi cdc anh. f)ee2e (O[0)e| Caan Hin 1s GameDesign hé tro test thir bing cach nhan nut play hay pause. SO 100ms & trén cé nghia 1a dé tré gitta hai anh ké tip nhau. Sau khi chay hét mét lit, qua trinh durge lap lai, Tao cic TiledLayer Tao cée TiledLayer bing cach chon nhimg tile & duéi va dat lén khung hinh tring 6 trén. Kich thude ctia TiledLayer c6 thé thay ddi duge. ‘Hie GH len Naviste Source factor uid fin Profle Versnnng Tec Window Heb FEES XSOOC Mumm T WDB Oe source 36 DQ Tedtayer faze He) nod Fae Minh 15 Tyo cc TiledLayer 29 Tao ra khung hinh trong game. Bude cudi cing 1d tao ra tao ra ban dd cho game bing cach két hgp cic TiledLayer va cae nhan vat Source Pelactor 8 BOE Deane F WD H- O- {hin Profle Versioning Tole window Help : a i q Hinh 16 Tao scene 30 Chuwong 3: Phan Tich va thiét ké Game don gin 1. M6 ta nat choi cita trd choi Tén tro choi: Duke & Jame Logic trd choi rat don gin : 1. Tré choi cé 2 nhan vat la: Duke va. Jame Duke Jame 2. Nhan vat Duke sé di bé trong khung dé tim Jame . 3. Duke cé thé di, nhay, hoc roi. Jame thi dimg mét ché va dao mit xung quanh, 4, Jame c6 thé dimg 6 bat ky dau trong khung 5. Khi Duke thdy Jame thi tré choi két thc. 6. Thdi gian ma Duke di tim Jame thi s@ duge tinh dé ghi diém ngudi choi, Théi gian ma Duke m thay cang nhanh thi diém cang cao. 2. M6t sé ludng quan trong trong chuong trinh Chuong trinh c6 3 lop Kim vé giao dign: 1. GameDesign: gdm cic thudc tinh va céc phurong thite public chuyén vé tao ra cdc déi tong dé hoa nhu Sprite, TiledLayer. Image ... 2.VisualMIDlet: bin chit dy 1a mot MIDlet vind duge mé rong tir kip MIDIet cia J2ME. Lép nay 6 nhigm vy tao ra giao dign menu ciia game, déng thi c6 mét s6 phuong thite cho chite nding High Score ciia game.Chite nang High Scores luu gid diém ciia 3 ngudi choi cé diém sé cao nhat trong may. ic diém sé duge uu trong bG nhé RMS cia may, vi thé ic thong sé nay vn lwu lai ngay ca khi ta tit tng dung. 31 3.GameScreen: ban chit day 1a mét GameCanvas lép nay chia tit ca cdc déi tugng dé hoa lay tir sp GameDesigt Lép nay cé rit nhiéu phuong thire nhu: 1.Vé cae doi tugng Ién man hinh 2.Ché va xde nhan phim bam 3.Tao céc hinh anh chuyén d6ng: Cac nhan vat 4.Xae nhin trang thai cia game: Game Over, Running 5.Lép nay 1 e6 mot phuong thie run) trong dé 66 vong kip While (Running){ ... } thuc hign tit ca cae thao tac 6 trong vong lip dé, ké ca goi Thread ciia cae 1ép nhan vat ‘M6i quan hé cia ba lép duge mé ta qua hinh ve VisualMIDIet GameSereen GameDesign Properties Properties Properties Methods Methods Methods Hinh 17 3 lop lam vé giao dién Duge hiéu la 1ép MIDlet va 16p GameSereen sé ¢6 quan hé két hgp (Association) véi nhau. (VisualMIDIet <> menu game va GameScreen <>giao dign choi game 6 thé giti thong digp dén nhau). Con 1ép GameDesign chi e6 quan hé mot chiéu vii lop GameSereen. ‘Trong lép GameDesign hd tro API ding dé quan ly layer manh va linh hoat gitip viée xay dug cic cimh game phite tap mét cach higu qua hon. Tao cae d4i trgng dé hoa dé lép GameSereen cap nhat Ién man hinh. Trong lép GameScreen (GameCanvas) c6 m6t ludng chinh thyc hign tat cf cde cong vige trong dé — Main Loop While (running) { +Xit bi sue kign mhan phim 32 +Caip nhat man hinh +E lai man hinh +-Xte bf thai gian tinh todn cho méi ving lip} L6p GameCanvas méi ed thé ve 1én man hinh va dap ing lai dat ligu nh§p trong phan than cua vong kip game, thay vi dya vao ede thread ve va nh§p ligu ctia hé théng.Dau tién, GameCanvas cho phép ban truy xuat tre tigp d6i tugng Graphics cita né sit dung phuong thire getGraphies(). Bat ky céng viée vé ndo trén déi trong Graphics duge tra vé s@ due hoan thinh trong b§ dém ngoai man hinh (offscreen). Sau dé ban e6 thé chép bO dém vao man hinh str dung flushGraphies(), khéng can phai dgi cho dén khi man Kkhién t6t hon viée hinh duge cap nhat. Cach tiép can nay cho phép ban di goi repaint(). Phuong thie repaint() tra vé ngay lap tire va ting dung cua ban khdng cin phai bio dam chinh xc khi ndo hé théng sé goi paint() dé cép hat man hinh GameCanvas cing ¢6 mot phuong thire dé ly trang thdi hign thdi cha ban phim thiét bj, mOt ky thuft duge goi Ia sham dé (polling). Thay vi chis cho hé th 12 goi phuong thirc keyPressed(), ban c6 thé xic dinh ngay lap tite cic phim no duoc nhan bang cich goi phirong thite getKeyStates() ctia GameCanvas. Cudi cing 1a lépVisualMIDIet. java sit dung lap Canvas nay. 33 2.1,Cae lép déi tugng : © camera: cet: Carma tee © Ganetucle & inkialce() © serie) © reamettbet) (@ suecholayabl( et alr, Osplsable nxtDplayable) (© commandtin( cone command, Olyable deplayat © etsvgMartter) : S¥atons © svataritenutetord) © cxt5vatenutnage:SiGina © cetsvgsamesplashscreent:SvSSnachsccen (© onsvgcamascoreswatscreend :svGwatscreen © etseguatinaged : image (© otsvaseachimaged):59ino9= © ortAdbig scoreTes :SnceCancelebleTask © etcareetConmand) + Cormand © getlaneredtried) : Tested © etal Art (© oetsvgsolchscreenabot():sVGSelachscreen © ortsvgAboutnaget:Sictns © crtivetenscareWaksczeen) : 51GiatSceen © etsvgscorestatie( :SVGEclassreen © get0kcommandz9 : Conan © oethigscoresTasi : SnelacanclsbeT ack © ontsvgsecresinaget : Sictnase © ortscoreTetrel) : Tested © ettazecarvas) :Nazecarwas © getolay) : Opl5y © eatmaoe) @ sate © paseo) © estroyhee(oclean wncndtions) @ errartg(Escesione) © gamever score) ‘1G updatesugwnttighscoree() 9p lsastscoreHohnough): teolesn © addscoeToscoreTable(ntrewscore, Sing slayeame) & ctr ecertabt sre) 34 1/ B6i teong GameMIDIet li 6p ehinh trong chuong trinh, 4) api dbi wong Display hign dl ‘Alert nda man inh game khéng hién thi duoe. wt thj man hinh menu 1 ede thao te tg hin tren Menu: : Déng thoi goi ludn déi tyong MazeCanvaz dé hign thi Game -c4e him goi dé hién thi man hinh nbur {rén anh smn hinh About, GameScore Hi hi smazeCanvaz_ ' 77 Goi db ong Display 8 ign thi 7 Hm bit du img dung yam dig eicong trnh 08 bit che ser kidn timer. lip abi tuong 1 Tht tap him GameOver a8 thye hign ghi diém cho nguii cho (@ Nazecanvas i: Gane Canvas Conmardistener @ Mazecarwast nett mit) © theaters © canmenddcin(Conmand arg Opal argt) © fhstrerso ] oetcanedver : boolean © settanager) : Hsetanaoe > idenotr yO) @ teyPressarheycode) © pare(aaphics) @ reset) © setGenecverd) WH showniort © #0 © wpderescreend) mace {My conner.x: ne CORNER nt iy conNeER_Y ct Ay ois peter : re {os wioTH ee A Fon pete ne 1D CPA BAK: rt i OFRcue AL ee ig ware ae 5 moet oy 8 myouneon amet 4) mtstcormand : conned By mmyFocusedind : rt {iy mcaneover:todean By myGanetiks : ne By mpage: celsooe {) mMeronmad Come {By myMerutade : boclean 4 mokcamad:conmant 35 1 Bi rgng MazeCanvas ké tha GameCanvas 1 Him kh 0 1 am lay trang thai bin phim dé di chuyén han vat, 2 ly trang thi ban phim 1 Ham tra vé gi tri bien MyGameOver Jay trang thai phim dé di chuyén va hién thi ‘man hinh ghi diém 1 Thue hign vé 46 hoa trén man hinh,va goi ‘ham paint cia d6i tuyng myManager. (Him update nhiing thay d6i etia him Paint hin thi lén man hinh.Néu khong hien thi duge thi bo IB SD MazeGamedesign @ getBigG&) : Image {© owed: nae © tes Sete © ostoness0: ste © gate eter @ getWall): Image tmtnteLayotanegeeveiattaazr te ate: rane Gis ste 1 dtesag Babes st 1 dsestnora: Gh dukeStumpingDelay : essen: Gl deseo i pres Ste Sones i) joer marl eee vat: nooe 36 1 di tugng MazeGameDesign 4& thy hign ede di tong d hoa 11 Cac him d8 load cée d6i tong : Image, Sprite, TiledLayer @ Mazetenager: Layeansger © MazeManageroe x, ry, PE whit heht MaceCarias canvae BH chechcelision() :boclean @ neo © pare(eaghics ) & updotesptehdreton nt ween) i) sac TUES se cas xe cans #08 ily o1se cia ee oie wor ee :UHP_FRAC_DENOM rt une FRAC NA Sy awe sat ee iy mex FREE FALL: nt (rex sreeD int {iy Move SUFFER: nt Ry Move LENGTH: re By 0 20 5) SqUMRE_WDTH: Wt LRRD adecrte:srte (G5 idesertesomatr pte soestintack A messes spe © lnarerOreten ne © lsaverovecten 1B] ezebos: MaseGaneDesin rmybadground: Tied.yer AB] mycanv : anecanvae BB eisdnorg re mytturneg oe meando nt mylene AB ya: The aye & be: Tine 2. Spitetemnatentakss Yer © Setobemstintasoie st, bolosn Forward) © bahvere) © forward © no (© saovnafcles tong) 37 11 D8: wong MazeManager ké thin lop the hign d@ hoa cia chuong, trinh i ham kha tao goi di ting MazeDesign 1 Ham i chuyén hin vit Duke trong Game, g5p xung d9t thi quay lai Gp nhain vat Jame thi thing: i lam thit lp si chuyén di ci Duke .Trong khi Duke di chuyén hign thy Sprite 1 ép d6i twong thiét Igp sue chuyén dong eta SpriteDuke 1p d6i wong GameThnead dé cos anes Gone geen) phn dng cho ec d6i trong ke & getwetTIned ona cia churomg trinh © pase siding Game © reqesten0 1 kb d6ng lai Game sau khi dimg ] resanecane) cfngong trinh @ m0 1 Bit di mst Game MWA so Sy myourgmn : Garett iy myourgencanvar: 5 mmastrtestine iro |p myShoudPauee: boon myst bxean 2,2, VisualMIDIet Day 1a céng cu tao ra cdc img dung J2ME bing hu dé thao tac rit true quan, Sau day 1a co c4u MIDIet em sit dung trong Game cita minh. 38 Emde 5 Hinh 17 Luu dé cac ludng trong thiét ké menu game 39 Hinh 18 thiét ké ludng img dung MazeCanvas 40 Diém bit dau li déi trong Mobile Device, sau khi chay chuong trinh so dé chuyén tir started dén déi tugng SplashScreen, déi trong nay thyc hién chite ning tao m6t khong chi va phéng mt dinh 1én man hinh dé quiing co vé game, Sau mét khoang thoi gian sé tw dong chuyén dén ddi tugng SgvMainmenu, Déi tugng SgvMainmenu gém mét danh sich cde chite nang ctia churong trinh nhu: StartGame — bat dau choi, About ~ ty déng chuyén dén ddi tong SgvFlashScreenAbout théng tin tic gid, High Score ~ diém s6 cia nhing ngudi choi cao nhat, Help — hudng din phim bam, Exit ~ thodt. Khi ngudi choi chon mét trong cdc chire nang nay cdc Form tuong img st dugc hién lén man hinh. Chiy: ‘Thanh phin StartGame trong Menu khdng chuyén mach ti d6i tugng nao trong menu vi khi chon StartGame man hinh chuyén dén déi tugng, GameCanvas va bat déu choi. Canvas li d6i tong giao dign mite thip nén khéng cho phép thao tic trén Iuu dé. Ta phai tur tao cic chite nding trong mot at sy kign Canvas, néu muén tir Canvas 6 thé quay Iai Menu chinh phai phim bam Back cho Canvas. 41 Hinh 19 Hinh anh qua trinh cua td choi : 42 Chuong 4: Két qua dat duge 1. Méi trudng cdi dgt > Ng6n ngit cai dat: Java 1d m6t ng6n ngdt lap trinh c6 higu qua cao, cdu tric déc lip nén cac img dung cita né chi can viét sao cho chay duge trén may do Java la 6 thé jit va chay tt trén moi hé thong. > MOi trudng soan thio: NetBean IDE 6.0 » Méi trréng chay chuong trinh: Sun J2ME Wireless Toolkit 2.5 (WTK) 2. Chay img dung Game . Mét sé hinh anh vé Game Duke & Jame Launch game Splash sereen Hinh 20 43 se © > a4 & 7? a Write Username High Scores Table Hinh 21 44 3. Két Inn va huéng phat trién 3.1. Nhitng két qua dat duoc Sau khi kim xong bai ip thuc tap “Lap trinh game di dng v6i JME” em da dat duge nhiing két qua sau: Vékién thie + Da nim bit duoc co ché hoat déng cia may do Java én dign thoai di dong, nhis dé hoan thign ky ning xay dung mot img dung bing ng6n ngit J2ME * Hoc duge nhimg kién thite co bin vé lam game ciing nhu lap trinh thy té rén ngOn ngit J2ME. Vé chuong trinh + Kich thuéc file JAR phi hop voi hau hét cic ding dién thoai cé hé tro MIDP 2.0. + Chwong trinh chi sir dung nhimg thw vign co ban cia J2ME nén c6 thé chay trén nhiéu dong may. 3.2. Nhitng han ché Bén canh nhitng két qua trén, ban than em thay nhing han ché cin khac phye sau + Kich thuée ea chuong trinh chua duge 16i wu héa + Game con don gidin + Chira 66 am thanh cho game 3.3. Huéng phat trién Huéng phat trién sau nay cha em 1a nghién ettu thém céc ky thudt Lim game nhur tao am thanh, tgo game 3D, va tim hiéu nhiing céng cu manh hon cho vige xay dyng do hoa cia Game 45 TALLIEU THAM KHAO JavaVietNam.org & Nha sach Dat Viét , Lap trinh Mobile Games bang J2ME, NXB Giao Théng Van Tai. . Phuong Lan & Hoang Dite Hai , Java(Tép 1), NXB Lao Dong Xa Hi. Addison Wesley Publisher, Programming Wireless Devices with the Java™ 2 Platform, Micro Edition, Second Edition. . Sams Publisher, Java™ 2 Micro Edition Application Development. . Hungry Minds, Wireless Programming with J2ME™: Cracking the code, Ine. James White, Java in Small Things, Maning Publications J2ME Game Programming ~ by Martin Wells Wireless Game Development in Java with MIDP.2.0 - by Ralph Barbagallo JIME Game Development with MIDP2 ~ by Jason Lam 46

You might also like