Implementace

Základní systém je naprogramován v jazyce Java. Jednotlivé algoritmy budou realizovány jako implementace rozhraní "Strategy". Na této stránce je stručný popis hlavních tříd a zdrojové kódy ke stažení (včetně ukázkové strategie). Implementace poměrně úzce koresponduje se zde uvedenými (podrobnými) pravidly, jména funkcí jsou snad intuitivní.

Popis základních tříd

Třída "World"

Tato třída reprezentuje hrací plán, resp. jeho viditelnou část z pohledu konkrétního robota.

Třída "Robot"

Tato třída reprezentuje konkrétního robota (poloha, jestli něco nese, ...).

Implementace strategií - rozhraní "Strategy"

Implementace vaší strategie spočívá v implementaci třídy, která implementuje rozhraní "Strategy":

  • setRobot(Robot, int): pomocí této funkce dostává strategie na začátku informaci o svém robotovi a jeho ID
  • decide(World, list): tato funkce rozhodne o další akci robota (BotAction) na základě současného stavu
Omezení:
  • Není povoleno používat vlákna (thread).
  • Zdrojový kód může mít maximálně 1MB.
  • Program může spotřebovávat maximálně 64MB RAM paměti (na disk nesmí zapisovat vůbec).
  • Každý robot je řízen vlastní instancí strategie. Tyto instance spolu nijak nemohou komunikovat (žádná sdílená paměť). Konkrétně je zakázáno používat statické proměnné tříd (kromě konstant). Uvedený paměťový limit se váže na každou instanci zvlášť.
  • Implementace může využívat pouze standardní knihovny jazyka Java z java.util.* a java.lang.*.
  • Implementace může být rozdělena do více souborů (styl odevzdávání viz níže). Součástí vašich zdrojových kódů může být i přejatý kód (např. nějaká cizí knihovna), musí však splňovat výše uvedená omezení. Zejména musíte dodržet celkový limit 1MB.
  • Program musí odpovědět do 1 sekundy. Pokud tak neučiní, robot v daném tahu nevykoná žádnou akci. Limit 1 sekunda je brán jako nadsazený, vaše strategie by měly být výrazně rychlejší (tj. nemělo by rozhodovat, na jakém přesně počítači simulace běží).
  • Cílem soutěže je naprogramovat strategii v souladu s duchem zde uvedených pravidel a nikoliv hledat a zneužívat díry či nedostatečnou specifikaci. Organizační výbor si vymezuje právo pravidla v průběhu soutěže upřesnit a případně i vyloučit ze soutěže strategie, které budou shledány neférovými. Pokud jste na pochybách, zda je určitá věc dovolená, radši to zkonzultujte.

Grafické prostředí pro simulaci

Máte k dispozici grafické prostředí pro simulaci hry. Pomocí tohoto prostředí si můžete vyzkoušet a vyladit svoji strategii. Pro vyhodnocení soutěže bude využito stejné prostředí.

Stažení

Zatím je k dispozici pracovní verze implementace. Tato verze se ještě může mírně změnit, větší úpravy však již nepředpokládáme. Chybová hlášení a náměty jsou vítány (viz kontakt níže).

  • Celý projekt (verze 13. 12.)
  • Distribuce (verze 13.12) (obsahuje pouze nutné věci ke spuštění)
  • Editor map (upravená verze, autor úprav M. Janík)
  • testovací mapy najdete na stránce k turnajům
Poznámky:
  • Pridal jsem do zakladniho baliku FIbota tridu Debugger, ktera je instanciovana do staticke promenne a dovoluje strategiim pro ucely vyvoje psat hlasky na obrazovku anebo zrusit limit 1sekundy. Pocitam ze do nej budu pridavat dalsi veci, co budou potreba(Na turnaj se tahle trida samozrejme zrusi). Muzes v tom smyslu na web napsat ze napady do Debuggeru jsou vitany.
  • Pred spustenim muze byt potreba nastavit CLASSPATH, napr.: CLASSPATH=/home/xnovak/temp/fibot2_v010/Fibot/lib/swing-layout-1.0.jar:
    /home/xnovak/temp/fibot2_v010/Fibot/build/classes; export CLASSPATH
  • Soubor mapy a strategie lze vyklikat primo v gui, ale i primo z prikazove radky pri spusteni. Program lze spoustet celkem se tremi argumenty:
    • prvni argument je cesta k .map souboru napr.: /home/xnovak/testmap.map
    • druhy arg. je absolutni cesta ke .class souboru vasi strategie napr. /home/xnovak/TestStrategy.class
    • treti argument je cesta ke strategii pro druheho hrace (obdobne jako predesle)
    Priklad: java cz/muni/fi/fibot/Main /home/xhomola2/testmap.map
    /home/xhomola2/TestStrategy.class /home/xhomola2/TestStrategy.class

Chyby, náměty, ...

Autorem implementace je Ondřej Homola (xhomola2). V případě nejasností týkajících se implementačních záležitostí, posílejte dotazy přímo jemu (+ kopii garantovi soutěže (xpelanek)). Pokud si myslíte, že vaše připomínka by mohla zajímat i ostatní soutěžící či je hodna diskuze, napište ji prosím do relevantního diskuzního fóra na ISu.

 
FIbot2 0.061s, total queries 9