| ProgramatorCZ | Diskusní fórum | ASMDprojekt | Vtipy | JavaScript |
| Spolupracujeme: WebGuru | Komplikátor | MinaSite | Přidat k oblíbeným položkám | Nastavit jako výchozí stránku |
|
|
Robocode - aneb Java (bojovou) hrou. v rubrice Java Pokud vás už nebaví donekonečna hrát hry a chcete zkusit něco jiného, čtěte dál. A pokud už popáté hrajete jednu a tu samou strategii, a napadlo vás někdy, jaké to je, postavit se na druhou stranu a naprogramovat si vlastního "soupeře" - tank, který smaže své nepřátele z povrchu monitoru, jste tu správně. Robocode je jednoduše geniální hračka - simulátor souboje tanků od IBM. Naprogramujete si v Javě svůj vlastní tank a můžete jej poslat do bitvy proti ostatním tankům. Do hrubé, typu všichni proti všem a nebo naopak do bitvy týmů, kde každý z tanků bude mít svou specializaci a svůj úkol. Co je k tomu potřeba? Kromě samotného prostředí, které lze stáhnout na stránkách Robocode samozřejmě i počítač - dle IBM je dostačující konfigurace Pentium II 400 MHz, 64 MB RAM a 10 MB na pevném disku - tedy žádné přehnané požadavky. Dále samozřejmě nainstalovaný JDK a to minimálně verze 1.3. Toliko k počítači. A co programátor? Třeba jsou samozřejmě alespoň základní znalosti Javy, něco málo z matematiky a pak už jen co nejvíc důvtipu. Po stažení a nainstalování máte k dispozici samotné grafické rozhraní, editor zdrojových kódů, překladač (jikes - od IBM), popis API a nakonec celou řadu ukázkových robotů. Prostředí spustíte pomocí Vlevo vidíte hrací plochu a vpravo editor zdrojových kódů. Na hrací ploše je již rozehrána bitva. V levém dolním rohu právě explodoval zasažený tank, vpravo pak tank obdržel zásah. Vlevo je možno zahlédnout i dvě letící střely. Pod každým z tanků je jeho jméno a nad ním je jeho energie (vysvětlena níže). V pravé části hlavního okna se nacházejí tlačítka, po jejichž stisknutí se zobrazí "konzole" každého z tanků, kam mohou zapisovat zprávy pro programátora. Tank
Takto vypadá náš tank - je jednoduchý. Skládá se ze tří částí - na samotném tanku se nachází věž s hlavní a na ní potom radar. To znamená, že pokud např. otáčí hlavní, otáčí se s ní i radar. Nicméně je možné s každou touto součástí pohybovat odděleně. Programování robota (tanku)Pokud jde o implementaci robota, každý robot je potomkem některé ze
tříd Nového robota vytvoříme tak, že ve spuštěném prostředí vybereme v nabídce
Robot položku Editor. V tomto editoru pak v menu File->New->Robot. Zadáme jak se
bude jmenovat (název třídy) a po té název balíčku (třeba jméno autora). Ve vytvořeném souboru se
nachází základ nového robota, odvozeného od třídy Je dobré si uvědomit, že jakmile robota pustíme do boje, nemůžeme ho vést za
ručičku (za hlaveň). Robot musí být soběstačný a musí se umět rozhodnout co
dělat. Jestli má střílet, jestli a kam má poodjet atd. Stěžejní metodou třídy je metoda K ovládání robota existuje několik základních metod: Kupříkladu, robot, který bude neustále jezdit ve čtverečku by měl takovouto
metodu
Vždy popojede o 200 bodů, otočí se doprava o 90° a pokračuje zase dopředu... Teď by nebylo na škodu na chvíli přerušit základní popis a říci si něco málo
k pravidlům střelby. Na začátku každého souboje má každý robot počáteční energii 100.
Každý výstřel stojí nějakou energii (označme si ji e) v rozsahu 0.1 až 3,
která se odečítá z energie tanku, a která se zadává v parametru metody Osud robota by měl být řízen zpracováním událostí. Několik základních
je
Podobným způsobem ošetřujeme i další události. Už s těmito několika základními metodami a událostmi se dají psát celkem solidní roboti. Navíc máme k dispozici třídy pro práci se soubory, do kterých si mohou naši roboti zapisovat údaje, čímž se mohou i učit. Protože se obvykle hrají souboje o několika kolech, mohou si roboti ukládat např. informace o soupeřích. Pokud je náš robot hotov, musíme jej zkompilovat - menu Compiler -> Compile. Nyní už můžeme vytvořit novu bitvu - v hlavním okně menu Battle -> New, kde vybereme roboty, kteří mají bojovat (můžeme vybrat i jen jediného, abychom si vyzkoušeli jeho pohyb), zadáme počet kol, velikost "arény", další hodnoty jako např. rychlost chladnutí zbraně (každým výstřelem se zbraň zahřívá a tank může střílet jen tehdy, pokud je teplota rovna nule). A bitva může začít. Roboti řešení jako potomci třídy
Tento robot bude jezdit neustále po kružnici. Základy strategieShrňme si pár užitečných bodů, na co dbát. Určitě je vhodné ošetřit nárazy do stěn a do ostatních robotů, protože tyto rovněž odebírají energii. Dobré je dbát na pohyb, aby se dal náš robot těžko zaměřit. Osobně mám raději polohy poblíž kraje, alespoň do té doby, dokud je v poli ještě hodně soupeřů. Je tam menší riziko jak zásahu zbloudilou střelou, tak i menší riziko palby od více nepřátel zároveň. Není nejlepší střílet jen tak nazdařbůh, protože každé minutí ubírá energii. Objekty získané při zpracovávání událostí jsou plné užitečných informací. Kupříkladu, když se srazíme s robotem, který má vyšší energii než my, nemá moc smysl se ho snažit za každou cenu "přestřílet" a je lepší odtamtud co nejrychleji zmizet. Zatímco, pokud je tento robot slabší, nám nic nebrání si na něm zvednout sebevědomí. O robotech by se dalo ještě dlouho povídat, ale to není účelem tohoto článku. Jeho cílem bylo ukázat, že i programování může být zábava a ukázat kde je možné tuto zábavu hledat. A já jen doufám, že svůj cíl splnil. Pokud vás myšlenka Robocode nadchla, určitě nakoukněte jak na stránky Robocode na serveru Alphaworks od IBM, kde je řada odkazů na ostatní servery. Stejně tak se na stránkách IBM Developer Works nachází několik článků k tématu. Dalším vynikajícím serverem je RoboCodeRepository, kde se mimo jiné nachází řada jiných robotů ke stažení a ke studiu. A pokud pořád nevíte kam skočit, zkuste server Robocode.net. Pokud Vám tyto odkazy nestačí, stačí lehce zagooglovat. A pokud se chcete přiučit Javě, můžete sledovat seriál, který na tomto serveru vychází ;-). Autor: Pavel Patz e-mail: cdome@centrum.cz web:
|
|
|
 
(c) Systém Jan Sova, Design David Krásenský a Jan Sova
Se svými dotazy či problémy se obracejte na diskusní
fórum.
Časopis je součástí projektu Programator