Table of Contents

Formate de intrare şi ieşire

Formatul de intrare

Parametrii

La începutul fiecărui joc, fiecărui bot îi sunt transmişi parametrii generali, care încep cu transmiterea liniei turn 0. Fiecare parametru este de forma

type value

Tipul valorii este determinat de tipul parametrului. Toate valorile sunt întregi cu semn pe 32 biţi (mai puţin player_seed a cărui valoare este un întreg cu semn pe 64 biţi).

dc = min(abs(a.col - b.col), cols - abs(a.col - b.col)) distance = sqrt(pow(dr, 2), pow(dc, 2)) Două căsuţe a şi b se află la o distanţă b dacă distance(a, b) <= r. ===== Formatul de ieşire ===== După ce botul a primit parametrii de la începutul jocului şi a terminat să se pregătească, el indică acest lucru engine-ului prin afişarea go. Fiecare bot poate să-şi mute un număr din furniciile proprii într-una din direcţiile nord, sud, est sau vest (dacă destinaţia nu este o căsuţă cu apă). Fiecare mutare se scrie pe o linie separată în următorul format: <code>row col direction</code> Numerotarea liniile şi coloanelor începe de la 0, iar direcţiile sunt una din literele N, E, S or W. La sfârşitul fiecărui tur, botul trebuie să afişeze go pentru ca engine-ul să ştie că s-a încheiat trimiterea mutărilor. Exemple găsiţi aici: http://aichallenge.org/specification.php#Bot-Output ==== Blocarea ==== Numai mutarea furnicilor este blocată de apă. Furnicile pot să vadă şi se pot ataca peste apă. Dacă un bot mută o furnică peste o căsuţă cu apă, acea mutare este considerată invalidă si va fi ignorată. De asemenea şi mâncarea va bloca mutarea furnicilor. Aceasta se întâmplă dacă mâncarea apare lângă o furnică. Dacă furnica nu va fi mutată, atunci acea bucată de mâncare va fi colectată la următorul tur. ==== Coliziunile ==== Se pot muta două furnici proprii în aceeaşi căsuţă. Însă dacă se întamplă acest lucru, ambele furnici vor muri. Dacă o furnică este trimisă către o căsuţă, iar un adversar îşi trimite o furnică către aceeaşi căsuţă, ambele furnici vor muri înainte de a se considera atacul. Acest lucru se poate întâmpla dacă o furnică se naşte lângă un adversar. ===== Formatul hărţii ===== O hartă este reprezentată sub forma unui grid dreptunghiular. Fiecare căsuţă poate conţine pământ, apă, mâncare, o singură furnică aflată în viaţă, mai multe furnici moarte sau un muşuroi. Furnicile se pot afla de asemenea pe muşuroi. Gridul este unul toroidal, adică dacă o furnică se deplasează în sus de pe primul rând al hărţii, ea va apărea pe ultimul rând; analog, se întâmplă pentru toate cele 4 direcţii. Fişierul ce conţine o hartă este un fişier text obişnuit, doar că are extensia .map. Fişierul are următorul format: <code> rows noRows cols noCols players noPlayers score s1 s2 … hive h1 h2 … m [.%*!?a-jA-J0-9] </code> Simbolurile au următoarea semnificaţie: . : pământ % : apă * : mâncare ! : furnici moarte ? : teritoriu nevizitat a-j : furnică A-J : furnică aflată pe un muşuroi propriu 0-9'' : muşuroi

Hărţile pot să descrie începutul fiecărui tur, excepţie făcând faptul că nu se ştie dacă sunt una sau mai multe furnici moarte pe o căsuţă anume, sau jucătorul ce deţine furnicile.

Pentru jocuri aflate în desfăşurare, hărţile generate sunt folosite pentru a descrie începutul jocului şi folosesc un subset al întregii hărţi. Mâncarea, furnicile şi furnicile moarte nu sunt incluse. Nicio căsuţă nu trebuie sa fie nevăzută. Scorurile şi numărul de jucători nu trebuie sa fie incluse. Hărţile trebuie sa fie simetrice.

Exemple găsiţi aici: http://aichallenge.org/specification.php#Map-Format