home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 December / PCWorld_2005-12_cd.bin / novinky / Interval / clanek04.htm < prev    next >
Encoding:
Extensible Markup Language  |  2005-06-01  |  22.4 KB  |  221 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='-1' />
  10. <meta name='robots' content='index,follow' />
  11. <meta name='googlebot' content='index,follow,snippet,noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta name='ICBM' content='49.1915, 16.626' />
  15. <meta name='DC.Title' content='Interval.cz' />
  16. <meta name='DC.Identifier' content='http://interval.cz' />
  17. <meta name='DC.Language' content='cs' />
  18. <meta http-equiv='pics-label' content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline EN v2.0" l gen true for "http://interval.cz" r (nz 1 vz 1 lz 1 oz 1 cz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://interval.cz" r (n 0 s 0 v 0 l 0))' />
  19. <meta http-equiv='imagetoolbar' content='no' />
  20. <meta http-equiv='MSThemeCompatible' content='no' />
  21. <meta name='MSSmartTagsPreventParsing' content='true' />
  22. <link rel='shortcut icon' type='image/x-icon' href='favicon.ico' />
  23. <link rel='alternate' type='application/rss+xml' title='RSS Interval.cz' href='http://interval.cz/__rss/rss.asp' />
  24. <link rel='home' href='http://interval.cz' />
  25. <link rel='search' href='http://interval.cz/search_ex.asp' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/interval-display.css' />
  28. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/interval-print.css' />
  29. <title>Kdo si J2ME, nezlobφ - zßklad hry -- J2ME -- V²voj aplikacφ -- Interval.cz</title>
  30. </head>
  31. <body class='interval interval-articles'>
  32. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  33. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  34. <div id='page-body'><div id='page-left'><div id='article'>
  35.  
  36.  
  37. <h2>Kdo si J2ME, nezlobφ - zßklad hry</h2>
  38. <p id='prepend'>V tomto Φlßnku se u₧ skuteΦn∞ pustφme do programovßnφ. ZaΦneme ·pln∞ minimßlnφm zßkladem, kter² pak budeme pozd∞ji rozÜi°ovat o r∙znΘ vymo₧enosti. Nejprve vÜak musφme aplikaci spustit a ukonΦit a mezi tφm takΘ n∞co nakreslit na displej.</p>
  39.  
  40. <h3>T°φdy aplikace</h3>
  41. <p>Hra se bude pro zaΦßtek sklßdat ze t°φ t°φd:</p>
  42.  
  43. <ul>
  44. <li><code>GameMIDlet</code> - hlavnφ t°φda aplikace rozÜi°ujφcφ abstraktnφ t°φdu <code>javax.microedition.midlet.MIDlet</code>.</li>
  45. <li><code>GameCanvas</code> - t°φda zodpov∞dnß za vlastnφ hru.</li>
  46. <li><code>GameSprite</code> - pomocnß t°φda slou₧φcφ k reprezentaci pohybliv²ch objekt∙. Implementuje rozhranφ t°φdy <code>javax.microedition.lcdui.game.Layer</code> z hernφho API MIDP 2.0, ke kterΘmu p°idßvß navφc jeÜt∞ metodu pro kontrolu vzßjemn²ch kolizφ objekt∙ dle vzoru t°φdy <code>javax.microedition.lcdui.game.Sprite</code> z tΘho₧ hernφho API. U telefon∙, kterΘ implementujφ MIDP 2.0, se mφsto tΘto t°φdy pou₧ije t°φda <code>javax.microedition.lcdui.game.Sprite</code>.</li>
  47. </ul>
  48.  
  49. <h3>GameMIDlet</h3>
  50. <p>V naÜem p°φpad∞ bude hlavnφ t°φda velmi jednoduchß, proto₧e pφÜeme minimalistickou aplikaci bez v∞tÜφ logiky. JedinΘ, co musφme ud∞lat, je p°i spuÜt∞nφ aplikace vytvo°it instanci t°φdy <code>GameCanvas</code> a zobrazit ji na displeji.</p>
  51.  
  52. <div class='sample'>
  53. protected void startApp() throws MIDletStateChangeException {
  54. <br />   if(canvas==null){
  55. <br />      <span class='comment'>// SpuÜt∞nφ aplikace</span>
  56. <br />      canvas = new GameCanvas(this);
  57. <br />      Display.getDisplay(this).setCurrent(canvas);
  58. <br />      } else {
  59. <br />      <span class='comment'>// Aktivace aplikace po jejφm pobytu v pasivnφm stavu, v naÜem p°φpad∞ zde nenφ pot°eba d∞lat nic.</span>
  60. <br />   }
  61. <br />}
  62. </div>
  63.  
  64. <p>P°i ukonΦenφ aplikace v metod∞ <code>destroyApp()</code> zatφm takΘ nemusφme d∞lat skoro nic. Pokud bychom vÜak cht∞li uklßdat aktußlnφ stav hry, pat°ila by tato akce sem.</p>
  65.  
  66. <div class='sample'>
  67. protected void destroyApp(boolean arg0) {
  68. <br />   <span class='comment'>/* Dßvßme aplikaΦnφmu mana₧eru najevo, ₧e midlet p°eÜel do zruÜenΘho stavu */</span>
  69. <br />   notifyDestroyed();
  70. <br />}
  71. </div>
  72.  
  73. <p>Pokud jste v J2ME ·plnφ zaΦßteΦnφci, doporuΦuji p°eΦφst si Φlßnek <a href='http://interval.cz/clanek.asp?article=1595' title='Bittnerovß, Lucie R·t: J2ME v kostce - prvnφ midlet'>J2ME v kostce - prvnφ midlet</a>.</p>
  74.  
  75. <h3>GameCanvas</h3>
  76. <p>Na displej lze kreslit komponenty, kterΘ implementujφ rozhranφ <code>javax.microedition.lcdui.Displayable</code>. Tyto zobrazitelnΘ komponenty se d∞lφ na zßkladnφ dv∞ skupiny - <em>vysoko·rov≥ovΘ komponenty</em> a <em>nφzko·rov≥ovΘ komponenty</em>.</p>
  77. <p>Vysoko·rov≥ovΘ komponenty neumo₧≥ujφ odchytßvßnφ udßlostφ klßvesnice, ani kreslenφ jednoduÜÜφch ·tvar∙ na konkrΘtnφ sou°adnice. Hodφ se nap°φklad k zobrazovßnφ formulß°∙ a seznam∙ polo₧ek (viz Φlßnek <a href='http://interval.cz/clanek.asp?article=1668' title='Bittnerovß, Lucie R·t: J2ME v kostce - kreslφme na displej'>J2ME v kostce - kreslφme na displej</a>). To je pro hru samoz°ejm∞ nedostateΦnΘ, tak₧e t°φda <code>GameCanvas</code> bude rozÜi°ovat  t°φdu <code>javax.microedition.lcdui.Canvas</code>, kterß jako jedinß ve specifikaci MIDP 1.0 umo₧≥uje nφzko·rov≥ovou grafiku. Specifikace MIDP 2.0 rozÜi°uje nabφdku nφzko·rov≥ov²ch komponent o formulß°ovou polo₧ku <code>CustomItem</code>, pomocφ kterΘ je mo₧nΘ napsat i jednoduÜÜφ hry, ale jejφ popis nespadß do rßmce tohoto Φlßnku.</p>
  78. <p>T°φda <code>GameCanvas</code> je celkem komplexnφ. Musφ vykreslovat hru, pravideln∞ aktualizovat polohu p°edm∞t∙, reagovat na stisk klßves u₧ivatelem a umo₧nit u₧ivateli ukonΦit aplikaci.</p>
  79.  
  80. <h4>Abstraktnφ p°φkaz</h4>
  81. <p>Po svΘm p°edku <code>javax.microedition.lcdui.Canvas</code> t°φda <code>GameCanvas</code> zd∞dila mo₧nost ovlßdßnφ pomocφ abstraktnφch p°φkaz∙. Toto ovlßdßnφ je spoleΦnΘ se vÜemi zobraziteln²mi komponentami. PraktickΘ provedenφ je nßsledujφcφ (ukßzka z konstruktoru t°φdy <code>GameCanvas</code>):</p>
  82.  
  83. <div class='sample'>
  84. <span class='comment'>/* vytvo°enφ novΘho p°φkazu, prvnφ parametr urΦuje jeho text, druh² jeho typ a t°etφ prioritu */</span>
  85. <br />endCmd = new Command("Konec", Command.EXIT, 1);
  86. <br /><span class='comment'>/* p°idßnφ p°φkazu komponent∞ */</span>
  87. <br />addCommand(endCmd);
  88. <br /><span class='comment'>/* nastavenφ posluchaΦe udßlostφ, kter² obsluhuje vyvolßnφ p°φkazu u₧ivatelem */</span>
  89. <br />setCommandListener(this);
  90. </div>
  91.  
  92. <p>Umφst∞nφ a zp∙sob zobrazenφ abstraktnφch p°φkaz∙ na displeji je zcela zßvislΘ na implementaci MIDP v telefonu. ObvyklΘ nap°φklad b²vß, ₧e jeden p°φkaz se zobrazφ na displeji dole k n∞kterΘmu ze softkey (kontextovß klßvesa) a druh² softkey obsahuje rozbalovacφ menu se zbyl²mi p°φkazy. Tento zp∙sob zobrazovßnφ mß tu nev²hodu, ₧e aplikace nemß k dispozici cel² displej, ale je ochuzenß o pruh s abstraktnφmi p°φkazy.</p>
  93. <p>Obrßzek ukazuje, jak abstraktnφ p°φkazy zobrazujφ telefony znaΦky Nokia. Jsou-li p°φkazy maximßln∞ dva, vejdou se vÜechny najednou na displej, je-li jich vφc, vejde se na displej jeden a ostatnφ se zobrazφ po stisknutφ odpovφdajφcφho softkey na zvlßÜtnφ obrazovce.</p>
  94.  
  95. <div class='image'>
  96. <img src='podklady/bittnerova/1158/1.png' title='Nokia - dva p°φkazy' alt='Nokia - dva p°φkazy' />
  97. <br /><span class='comment'>Nokia - dva p°φkazy</span>
  98. </div>
  99.  
  100. <div class='image'>
  101. <img src='podklady/bittnerova/1158/2.png' title='Nokia - vφce p°φkaz∙' alt='Nokia - vφce p°φkaz∙' />
  102. <br /><span class='comment'>Nokia - vφce p°φkaz∙</span>
  103. </div>
  104.  
  105. <div class='image'>
  106. <img src='podklady/bittnerova/1158/3.png' title='Nokia - menu' alt='Nokia - menu' />
  107. <br /><span class='comment'>Nokia - menu</span>
  108. </div>
  109.  
  110. <p>Telefony znaΦky Siemens p°φtomnost abstraktnφch p°φkaz∙ pouze naznaΦφ Üipkou v pravΘm dolnφm rohu displeje a po stisku odpovφdajφcφho softkey teprve zobrazφ vÜechny p°φkazy.</p>
  111.  
  112. <div class='image'>
  113. <img src='podklady/bittnerova/1158/4.png' title='Siemens - naznaΦenφ p°φtomnosti p°φkaz∙' alt='Siemens - naznaΦenφ p°φtomnosti p°φkaz∙' />
  114. <br /><span class='comment'>Siemens - naznaΦenφ p°φtomnosti p°φkaz∙</span>
  115. </div>
  116.  
  117. <div class='image'>
  118. <img src='podklady/bittnerova/1158/5.png' title='Siemens - menu' alt='Siemens - menu' />
  119. <br /><span class='comment'>Siemens - menu</span>
  120. </div>
  121.  
  122. <p>Jak si jist∞ pozornφ Φtenß°i vÜimli, t°φda <code>GameCanvas</code> implementuje rozhranφ <code>javax.microedition.lcdui.CommandListener</code>. Toto rozhranφ obsahuje pouze metodu <code>commandAction(Command command, Displayable displayable)</code>, kterß slou₧φ k obsluze udßlosti vyvolßnφ p°φkazu. Parametr <code>command</code> obsahuje p°φkaz, kter² byl vyvolßn, a parametr <code>displayable</code> obsahuje zobrazitelnou komponentu, v nφ₧ udßlost nastala. Nßs bude zajφmat pouze parametr <code>command</code>, proto₧e v aplikaci zatφm mßme jen jednu zobrazitelnou komponentu. Kdybychom vÜak m∞li aplikaci slo₧enou z vφce grafick²ch komponent, byl by nap°φklad p°φkaz "Zp∞t" typickou ukßzkou p°φkazu, kter² obsahujφ skoro vÜechny obrazovky a jeho₧ zpracovßnφ se liÜφ v zßvislosti na obrazovce, kde udßlost nastala.</p>
  123.  
  124. <div class='sample'>
  125. public void commandAction(Command command, Displayable displayable) {
  126. <br />   if(command==endCmd){
  127. <br />      midlet.destroyApp(true);
  128. <br />   }
  129. <br />}
  130. </div>
  131.  
  132. <h4>Kreslenφ na displej</h4>
  133. <p>VeÜkerΘ kreslenφ probφhß v metod∞ <code>paint(Graphics graphics)</code> zd∞d∞nΘ ze t°φdy <code>javax.microedition.lcdui.Canvas</code>. Nelze p°edpoklßdat, ₧e je stßle zobrazenΘ, co jsme nakreslili p°i p°edchozφm volßnφ tΘto metody, je pot°eba poka₧dΘ nakreslit vÜe znova. Parametr <code>graphics</code> se m∙₧e pou₧φvat pouze v rßmci metody <code>paint()</code> (a samoz°ejm∞ takΘ v rßmci metod volan²ch z tΘto metody).</p>
  134. <p>P°i ka₧dΘm volßnφ metody jsou nastaveny n∞kterΘ vlastnosti grafiky na v²chozφ hodnoty:</p>
  135.  
  136. <ul>
  137. <li>aktußlnφ barva je Φernß</li>
  138. <li>font je nastaven na v²chozφ font</li>
  139. <li>styl Φßry je nep°eruÜovan² (<code>Graphics.SOLID</code>)</li>
  140. <li>poΦßtek sou°adnic je v levΘm hornφm rohu displeje</li>
  141. </ul>
  142.  
  143. <p>AplikaΦnφ mana₧er zavolß metodu <code>paint()</code> jenom v p°φpad∞, ₧e je <code>Canvas</code> prßv∞ zobrazen² na displeji. O p°ekreslenφ displeje lze za₧ßdat metodou <code>repaint()</code>, kterß neblokuje b∞h aplikace (ukonΦφ se nezßvisle na volßnφ metody <code>paint()</code>). To vÜak neznamenß, ₧e bude displej okam₧it∞ p°ekreslen, nebo¥ jeho p°ekreslenφ zßvisφ na viditelnosti p°ekreslovanΘ oblasti.</p>
  144. <p>Pokud si chceme na p°ekreslenφ displeje poΦkat a teprve potΘ pokraΦovat v b∞hu aplikace, musφme pou₧φt po volßnφ metody <code>repaint()</code> jeÜt∞ metodu <code>serviceRepaints()</code>. Tato metoda si vynutφ obsluhu vÜech zatφm neobslou₧en²ch po₧adavk∙ na p°ekreslenφ displeje a ukonΦφ se teprve a₧ po jejφm provedenφ. Jedinou v²jimkou je p°φpad, kdy <code>Canvas</code> nenφ viditeln², v tom p°φpad∞ volßnφ metody <code>serviceRepaints()</code> neprovede nic. P°i zobrazovßnφ n∞jakΘ animace se celkem hodφ vykreslit vÜechny jejφ kroky, tak₧e budeme volat funkci <code>repaint()</code> spolu s funkcφ <code>serviceRepaints()</code>.</p>
  145. <p>V konstruktoru t°φdy <code>GameCanvas</code> je takΘ pot°eba nahrßt obrßzky. V naÜem p°φpad∞ m∙₧eme nahrßt klidn∞ vÜechny, vΦetn∞ t∞ch, kterΘ pou₧ijeme a₧ p°i v²buchu lodi. P°i tvorb∞ aplikacφ s v∞tÜφm poΦtem velk²ch obrßzk∙ se vÜak pravideln∞ stßvß, ₧e se vÜechny nevejdou telefonu do pam∞ti. Pak je pot°eba d∙sledn∞ uvol≥ovat vÜechny zdroje v okam₧iku, kdy nejsou pot°eba, a nahrßvat je a₧ t∞sn∞ p°ed jejich pou₧itφm.</p>
  146. <p>Obrßzky v <em>J2MEWTK</em> dßme do adresß°e <em>J2MEWTK_HOME/Blabouch/res</em>. Tyto obrßzky p°i vytvß°enφ JAR souboru s aplikacφ skonΦφ p°φmo v ko°eni tohoto JAR souboru a nahrajφ se nßsledujφcφm zp∙sobem:</p>
  147.  
  148. <div class='sample'>
  149. try{
  150. <br />   Image background = Image.createImage("/background.png");
  151. <br />} catch(Exception e){
  152. <br />   e.printStackTrace();
  153. <br />}
  154. </div>
  155.  
  156. <p>P°ed ukßzkou metody <code>paint()</code> se hodφ jeÜt∞ blφ₧e popsat zp∙sob umis¥ovßnφ obrßzk∙ a textov²ch °et∞zc∙ na displej. Metody <code>Graphics.drawImage()</code> a <code>Graphics.drawString()</code> v prvnφm parametru  dostßvajφ objekt, kter² chceme vykreslit. Druh² a t°etφ parametr urΦujφ sou°adnice kotvy, poslednφ parametr pak °φkß, v jakΘm mφst∞ obrßzku nebo textu se kotva nachßzφ. Umφst∞nφ kotvy se definuje pomocφ bitovΘho souΦtu (operßtor <samp>|</samp>) konstanty t°φdy <code>Graphics</code> definujφcφ jejφ x sou°adnici a konstanty definujφcφ jejφ y sou°adnici. V nßsledujφcφ ukßzce je kotva umφst∞na v obou p°φpadech v levΘm hornφm rohu objektu:</p>
  157.  
  158. <div class='sample'>
  159. protected void paint(Graphics g) {
  160. <br />   <span class='comment'>// nastavenφ barvy na bφlou</span>
  161. <br />   g.setColor(0xffffff);
  162. <br />   <span class='comment'>// p°ekreslenφ celΘho displeje aktußlnφ barvou</span>
  163. <br />   g.fillRect(0,0,getWidth(), getHeight());
  164. <br />   <span class='comment'>// nakreslenφ obrßzku background</span>
  165. <br />   g.drawImage(background, 0, 0, Graphics.TOP | Graphics.LEFT);
  166. <br />
  167. <br />   <span class='comment'>/* zde     se vykreslujφ jednotlivΘ p°edm∞ty */</span>
  168. <br />
  169. <br />   <span class='comment'>// nastavenφ barvy na Φervenou</span>
  170. <br />   g.setColor(0x840400);
  171. <br />   <span class='comment'>// nakreslenφ poΦtu bod∙</span>
  172. <br />   g.drawString("" + score, 0, 2, Graphics.TOP | Graphics.LEFT);
  173. <br />}
  174. </div>
  175.  
  176. <h3>GameSprite</h3>
  177. <p>T°φdu <code>GameSprite</code> pou₧ijeme k reprezentaci lodi, mincφ a bomb. Jak u₧ je °eΦeno v²Üe, je to velmi minimalistickß implementace t°φdy <code>Sprite</code> z hernφho rozhranφ MIDP 2.0. T°φda <code>Sprite</code> navφc umo₧≥uje spoustu praktick²ch v∞cφ, nap°φklad animace obrßzk∙ Φi jejich transformace. TakΘ metoda <code>collidesWith(GameSprite sprite, boolean pixelLevel)</code> v <code>GameSprite</code> bohu₧el v rßmci MIDP 1.0 nemß mo₧nost zjistit kolize na ·rovni pixel∙ (dva obrßzky kolidujφ pouze tehdy, p°ekr²vajφ-li se nepr∙hledn²mi pixely), tak₧e druh² parametr je zde jen do poΦtu z d∙vodu kompatibility se t°φdou <code>Sprite</code>.</p>
  178. <p>T°φda <code>GameSprite</code> obsahuje jeden obrßzek a pozici jeho levΘho hornφho rohu, kterou lze m∞nit relativn∞ (<samp>move(int dx, int dy)</samp>) nebo nastavit absolutn∞ (<samp>setPosition(int x, int y)</samp>). Za vykreslenφ je zodpov∞dnß metoda <code>paint(Graphics g)</code>. T°φda <code>GameSprite</code> m∙₧e b²t viditelnß Φi neviditelnß. Je-li neviditelnß, metoda <code>paint(Graphics g)</code> neud∞lß nic.</p>
  179.  
  180. <h3>Ke sta₧enφ</h3>
  181. <p>VeÜkerΘ zde uvedenΘ <a href='podklady/bittnerova/1158/zdroj.zip'>zdrojovΘ k≤dy i obrßzky</a> ke h°e a dalÜφ materißl si m∙₧ete stßhnout a pou₧φt.</p>
  182.  
  183. <div id='article-author'>
  184. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=144'>Bittnerovß, Lucie R·t</a> (12. 5. 2005)
  185. <div id='article-about-author'>programßtor û analytik <a href="http://www.amaio.cz">Amaio Technologies</a></div>
  186. </div>
  187.  
  188. <div class='refer'><h3><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/serial.asp?serial=225' title='p°ehled Φlßnk∙ vΦetn∞ anotacφ'>Kdo si J2ME, nezlobφ</a></h3><p>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!</p><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3889'>Kdo si J2ME, nezlobφ - trocha pohybu</a></li><li><strong>Kdo si J2ME, nezlobφ - zßklad hry</strong> (prßv∞ Φtete)</li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3861'>Kdo si J2ME, nezlobφ - ·vod pro ka₧dΘho</a></li></ul></div>
  189.  
  190.  
  191. </div></div>
  192. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  193. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  194.  
  195.  
  196.  
  197. <div class='page-right-box book'>
  198.     <h3>Kni₧nφ novinka</h3>
  199.     <div class='page-right-box-in'>
  200.         <div class='book-top'>
  201.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=249'>XDHTML - referenΦnφ p°φruΦka</a></h4>
  202.         </div>
  203.         <div class='image'>
  204.             <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  205.         </div>
  206.         <div class='book-bottom'>Cena: <span class='book-price-old'>200 KΦ</span> <span class='book-price-new'>180 KΦ</span></div>
  207.     </div>
  208. </div>
  209.  
  210.  
  211.  
  212. <div class='page-right-box reading'><h3 title='NejΦten∞jÜφ Φlßnky za poslednφch 14 dn∙'>NejΦten∞jÜφ</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3894'>CSS3 - zßklady styl∙ v novΘm kabßt∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3892'>Sout∞₧ o PC a notebooky firmy DEXX 05/21</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3895'>InternetovΘ akcelerßtory obecn∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3889'>Kdo si J2ME, nezlobφ - trocha pohybu</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3890'>CodeBeside v ASP.NET 2.0</a></li></ul></div></div><div class='page-right-box cauldron'><h3 title='Nejdiskutovan∞jÜφ Φlßnky za poslednφch 21 dn∙'>Diskuznφ kotel</h3><div class='page-right-box-in'><ul><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3888' title='(41 komentß°∙)'>CSS3 - kaskßdovΘ styly budoucnosti</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3894' title='(19 komentß°∙)'>CSS3 - zßklady styl∙ v novΘm kabßt∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3895' title='(11 komentß°∙)'>InternetovΘ akcelerßtory obecn∞</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3893' title='(9 komentß°∙)'>WAP 2.0 - formßtovßnφ textu</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3889' title='(9 komentß°∙)'>Kdo si J2ME, nezlobφ - trocha pohybu</a></li></ul></div></div>
  213.  
  214.  
  215.  
  216. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  217. </div>
  218. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  219. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  220. </body>
  221. </html>