Kdo si J2ME, nezlobφ - ·vod pro ka₧dΘho
V nßsledujφcφch Φlßncφch vytvo°φme jednoduchou hru. Pro zaΦßtek si hlavn∞ rozebereme vÜe, na co by m∞l Φlov∞k myslet d°φve, ne₧ se skuteΦn∞ pustφ do psanφ. I kdy₧ nejste p°φmo programßto°i, sm∞le se do Φlßnku pus¥te, proto₧e neobsahuje ₧ßdn² k≤d...
Z Φeho se hra sklßdß
Ka₧dß hra se obvykle sklßdß z n∞kolika komponent:
- ┌vodnφ obrazovka (splashscreen) - obrßzek (m∙₧e to b²t i animace nebo n∞kolik obrßzk∙ za sebou), kter² se zobrazφ p°i spuÜt∞nφ aplikace. Obsahuje obvykle nßzev hry a logo v²robce, m∙₧e zobrazovat pr∙b∞h nahrßvßnφ hry.
- Menu - obsahuje obvykle standardnφ polo₧ky, jako nap°φklad hrßt, nastavenφ, nßpov∞da, sk≤re, o aplikaci a konec.
- Vlastnφ hra - i kdy₧ hry mohou b²t diametrßln∞ odliÜnΘ, existuje n∞kolik kritΘriφ, kterß by m∞ly spl≥ovat. P°i odstran∞nφ vlastnφ hry z displeje by m∞l b²t b∞h hry pozastaven a p°i jejφm zobrazenφ op∞t spuÜt∞n. Je-li aplikace urΦena na vφce cφlov²ch za°φzenφ, je vhodnΘ, je-li logika hry odd∞lena od t°φdy, kterß hru zobrazuje, proto₧e logika hry z∙stßvß stßle stejnß, i kdy₧ je nutnΘ psßt zobrazovßnφ hry pro r∙znß za°φzenφ zvlßÜ¥.
- Sk≤re - seznam nejvyÜÜφho dosa₧enΘho sk≤re. Sk≤re m∙₧e b²t odesφlatelnΘ na server, aby se mohli hrßΦi porovnßvat mezi sebou. V tom p°φpad∞ musφ hra obsahovat i formulß° pro registraci u₧ivatele na server, mß-li jmΘno jednoznaΦn∞ identifikovat u₧ivatele.
- Nastavenφ - hra obvykle mφvß n∞jakΘ nastavitelnΘ parametry, jako je nap°φklad ·rove≥ obtφ₧nosti, rozm∞ry hernφho plßnu a podobn∞. V∞tÜinou staΦφ nastavenφ parametr∙ aplikace implementovat jako jednoduch² formulß°.
Nßsledujφcφ moduly sice nejsou "vid∞t", p°esto na n∞ nesmφme zapomenout:
- Perzistentnφ data - uklßdat si data do trvalΘ pam∞ti m∙₧e chtφt vφce nezßvisl²ch modul∙ aplikace. Bylo by neefektivnφ (vzhledem k omezenΘ velikosti aplikace), kdyby si p°φstup k t∞mto dat∙m zajiÜ¥oval ka₧d² modul sßm.
- HTTP modul - zde platφ to samΘ jako u perzistentnφch dat. Komunikovat po sφti m∙₧e ·vodnφ obrazovka (sta₧enφ aktußlnφch informacφ), vlastnφ hra (je-li sφ¥ovß) i seznam nejlepÜφch sk≤re.
Pohled na aplikaci jako na spojenφ n∞kolika modul∙ p°es n∞jakΘ vlastnφ, jasn∞ definovanΘ rozhranφ, je v²hodn² ze dvou d∙vod∙. Prvnφm z nich je znovuvyu₧itelnost komponent. N∞kterΘ komponenty jsou u v∞tÜiny aplikacφ stejnΘ (·vodnφ obrazovka, sk≤re), tak₧e je staΦφ napsat jednou u prvnφ aplikace a u dalÜφch aplikacφ je m∙₧eme pou₧φt tak, jak jsou, pouze s v²m∞nou obrßzku.
Druh²m d∙vodem je jednoduchß nahraditelnost komponent. Vezm∞me si jako p°φklad t°eba menu aplikace. Pro telefony s mal²m displejem je menu tvo°enΘ pouze obyΦejn²m seznamem polo₧ek (t°φda javax.microedition.lcdui.List
) zcela dostaΦujφcφ. OvÜem u v∞tÜφch telefon∙, kterΘ se velikostφ blφ₧φ k PDA, vypadß takovΘ menu dost neesteticky a nenφ od v∞ci nahradit tuto komponentu novou verzφ, kterß kreslφ menu s pou₧itφm nφzko·rov≥ovΘho rozhranφ (javax.microedition.lcdui.Canvas
nebo v MIDP 2.0 polo₧ky typu javax.microedition.lcdui.CustomItem
vlo₧enΘ do formulß°e javax.microedition.lcdui.Form
).
Ne₧ zaΦneme programovat
Ne₧ se pustφme do programovßnφ, je Φas na n∞kolik ·vah.
Popis hry
Prvnφm krokem je p°esn∞ popsat, jak se mß hra chovat. I pak se sice m∙₧e mnohΘ v pr∙b∞hu programovßnφ zm∞nit, ale rozhodn∞ bude k≤d p°ehledn∞jÜφ, ne₧ kdy₧ zaΦneme rovnou ₧iveln∞ psßt.
NßÜ scΘnß° bude vypadat takto:
H°e °φkejme t°eba Blabouch. Pod mostem plave lo∩. U₧ivatel ovlßdß lo∩ stiskem Üipky doleva nebo doprava. Dokud u₧ivatel Üipku dr₧φ, lo∩ se pohybuje, kdy₧ Üipku pustφ, lo∩ se zastavφ. Prav² a lev² okraj displeje jsou pro lo∩ nepr∙chozφ, zarazφ se o n∞. Z mostu padajφ mince r∙znΘ hodnoty a bomby. Cφlem hry je chytit lodφ co nejvφce mincφ, jejich₧ hodnoty se sΦφtajφ do celkovΘho sk≤re. Dotkne-li se lodi bomba, lo∩ exploduje a hra konΦφ.
Popis cφlovΘ platformy
Dßle je t°eba rozmyslet, na jakß vÜechna za°φzenφ je hra urΦena a jak se vypo°ßdßme s jejich r∙zn²mi vlastnostmi - velikost displeje, poΦet barev displeje, ovlßdßnφ klßvesnicφ nebo stylusem, maximßlnφ velikost aplikace, r∙znß implementovanß proprietßrnφ a rozÜi°ujφcφ rozhranφ a podobn∞.
Ovlßdßnφ klßvesnicφ nebo stylusem lze implementovat najednou, nenφ-li aplikace nabitß k prasknutφ a nebojujeme-li tedy o ka₧d² bajt velikosti.
Jak je poznat u₧ ze scΘnß°e, ovlßdßnφ stylusem nebudeme °eÜit, jinak by bylo pot°eba i zp∙sob tohoto ovlßdßnφ naplßnovat dop°edu.
HorÜφ je to s r∙zn²mi displeji. Zde mohou nastat v zßsad∞ t°i varianty:
- Hra bude beze zm∞ny b∞hat na vÜech mo₧n²ch rozliÜenφch displeje. P°φkladem tΘto varianty m∙₧e b²t hra na Üachovnici, ve kterΘ vÜe kreslφme pomocφ nφzko·rov≥ovΘ grafiky, rozm∞ry vypoΦteme podle velikosti displeje a nepou₧φvßme hotovΘ obrßzky. Tento stav by byl asi ideßlnφ, ale obvykle se bez hotov²ch obrßzk∙ neobejdeme.
- Pro r∙znß rozliÜenφ displeje je pot°eba vytvo°it r∙znΘ obrßzky. TΘto variant∞ odpovφdß v∞tÜina her. Do verze pro telefony s v∞tÜφm displejem se prost∞ dajφ stejnΘ obrßzky, jako pro telefony s menÜφm displejem, jen budou mφt v∞tÜφ velikost. Mezi obrßzky musφme poΦφtat i ikony v menu tvo°enΘm seznamem polo₧ek a ikony p°ed jmΘnem hry v seznamu aplikacφ. A zde trochu komplikuje ₧ivot, ₧e nejprve Φlov∞k musφ zjistit velikosti t∞chto ikon metodou pokus-omyl, proto₧e specifikace telefon∙ tyto ·daje obvykle neuvßdφ, a pak zjistφ, ₧e i telefony s velmi podobnou velikostφ displeje majφ velikosti ikon Φasto dost odliÜnΘ.
- Pro r∙znß rozliÜenφ je pot°eba nastavit n∞kterΘ parametry odliÜn∞ Φi dokonce p°epsat zdrojov² k≤d. Tato situace nastane, pokud se aplikace Üije na mφru displeji a je pot°eba zachovat proporce a p°esnost na pixel (t°eba u fotbalu musφ aplikace znßt p°esn∞ pozice branky, aby nehlßsila g≤l, aΦkoli by Üel mφΦ mimo branku).
V naÜem p°φpad∞ bude platit druhß varianta. Pro zaΦßtek se hodφ zvolit si jeden telefon, na kter² se aplikace vyvφjφ, a p°enos na ostatnφ telefony °eÜit eventußln∞ a₧ na zßv∞r, kdy je hra prakticky hotovß.
Mezi dalÜφ ·koly, kterΘ je pot°eba p°edem zvß₧it, pat°φ takΘ °eÜenφ vφcejazyΦnosti aplikace a zp∙sob organizace projektu (obrßzk∙, text∙, modul∙, sestavovßnφ cφlov²ch aplikacφ a podobn∞). P°i takovΘ variabilit∞ za°φzenφ, jakß panuje, je tento ·kol velmi d∙le₧it². Plßnujeme-li psßt aplikace nejen pro vlastnφ pot∞Üenφ, je pot°eba co nejvφce ·kon∙ automatizovat, aby se zabrßnilo chyb∞ lidskΘho faktoru p°i ruΦnφm kopφrovßnφ tam a zase zpßtky a takΘ aby se lidsk² faktor z toho vÜeho nezblßznil. Jeliko₧ zatφm budeme psßt zcela jednoduchou aplikaci v jednom jazyce a na jedno za°φzenφ, nechßme si komplikovan∞jÜφ organizaci projektu a₧ na pozd∞ji.
Kdo si J2ME, nezlobφ
Projdeme si na konkrΘtnφm p°φkladu krok po kroku vznik J2ME hry a budeme p°itom °eÜit r∙znΘ problΘmy, kterΘ v²voj aplikace na mobilnφ telefon provßzejφ. P°edpokladem je znalost syntaxe programovacφho jazyka Java. Tato sΘrie Φlßnk∙ dosud nebyla ukonΦena!
- Kdo si J2ME, nezlobφ - ·vod pro ka₧dΘho (prßv∞ Φtete)