Apocalypse Now Redux

Omer Giménez, Jordi Petit, Enric Rodríguez, Salvador Roura

Regles del joc

Programació

Al problema d’Apocalyse Now Redux del Jutge, juntament a aquest enunciat, hi trobareu el material necessari per programar el joc en C++. En concret, hi teniu tots els fitxers de suport, exemples de jugadors, i un visor de partides amb els quals podreu desenvolupar i provar els vostres jugadors.

Necessitareu g++, make i un navegador recent (Firefox, Chrome, Chromium, preferiblement un d’aquests dos últims). El codi del joc és portable a qualsevol sistema Linux, Mac o Windows, suposant que hi instal·leu les eines adequades. Els ordinadors de la FIB i de la FME ja tenen aquest software instal·lat. Si voleu treballar amb altres màquines:

Com fer un jugador

Per fer un jugador, copieu primer el fitxer AINull.cc a un fitxer AIXXX.cc, on XXX és un identificador de la vostra elecció. Trieu un identificador no ofensiu, que no hagi estat triat ja per un altre estudiant, i compost per, com a molt, 12 lletres, dígits i caràcters de subratllat; per exemple, Terminator.

A continuació, al fitxer AITerminator.cc (o com l’hagueu anomenat) que acabeu de crear, heu de canviar la línia 11 per posar-hi el nom del vostre jugador (a l’exemple, @#define PLAYER_NAME Terminator@).

Finalment, heu d’implementar el vostre jugador tot completant la classe PLAYER_NAME que hereta les operacions de consulta del tauler (classe @Board@) i de creació d’accions (classe @Action@) a través de la classe base @Player@. El mètode @play()@ es crida a cada ronda per transmetre-us l’estat actual del tauler i recollir les accions del vostre jugador. A la vostra classe hi podeu afegir camps (variables) per recordar l’estat d’una ronda a l’altra, mètodes (funcions) per descompondre el vostre programa, etc.

Fixeu-vos que la vostra classe ha de contenir una funció anomenada @factory()@ que no heu de modificar, i que després de la classe també hi ha una crida per registrar el vostre jugador, que tampoc heu de modificar.

Podeu prendre com a referència el jugador AIDemo.cc que s’adjunta amb el material de la pràctica.

Com executar i veure partides localment

  1. Executeu make per compilar tots els fitxers que calguin i crear l’executable Game.

  2. Per disputar una partida amb els paràmetres de joc default.cnf, executeu una comanda com ara

    ./Game Null Terminator Demo Demo < default.cnf > default.res

    Aquí, el primer jugador serà Null, el segon Terminator, i els altres dos Demo. El resultat de la partida quedarà a default.res.

  3. Visualitzeu la partida obrint el visor (viewer.html) amb el vostre navegador i carregueu el fitxer default.res. A part de la barra de desplaçament i dels botons que hi apareixen a sobre, algunes altres tecles també permeten controlar la reproducció de la partida; pitgeu h durant la visualització per obrir una finestra d’ajuda autoexplicativa.

Podeu obtenir la llista completa de paràmetres del programa Game fent ./Game --help. En particular, ./Game --list us llistarà els noms dels jugadors inclosos.

Si us cal, podeu netejar el vostre directori de fitxers executables i fitxers objectes amb la comanda make clean.

Restriccions

Els codis dels vostres jugadors han de complir certes limitacions:

Estructures de dades

Per saber com consultar el tauler, feu un cop d’ull al fitxer @Board.hh@ (en particular, pareu atenció a les operacions públiques de la classe @Board@). Per saber com sol·licitar les accions, mireu el fitxer @Player.hh@ (en particular, fixeu-vos en les operacions públiques de la classe @Player@). Fixeu-vos que només podeu utilitzar les operacions públiques d’aquestes classes.

Sempre que es crida un mètode amb paràmetres incorrectes s’escriurà un missatge d’error per la consola. Cridar mètodes amb paràmetres incorrectes no provocarà mai que el vostre programa es pengi, però tingueu en compte que el pot fer anar bastant més lent, degut a l’escriptura dels missatges.

Consells