PacMan

Omer Giménez Mario G. Munzón Jordi Petit Salvador Roura

Regles del joc

Aquesta és una versió multi-jugador del PacMan, el clàssic joc d’arcade.

Resumint, cada jugador controla un pacman i diversos fantasmes que es mouen en un tauler rectangular que conté un laberint. A cada casella del tauler poden haver-hi cocos (dots) que aporten punts, cocos energètics (pills) que aporten punts i donen poder als pacmans, i bonus que aporten encara més punts i efectes especials. En mode normal, els pacmans no poden tocar els fantasmes perquè sinó moren. Però quan un pacman és poderós, aleshores córre al doble de velocitat i pot menjar els fantasmes enemics, els quals moren. De fet, els pacmans i els fantasmes no morrn permanentment, sinó que després d’un cert temps, es regeneren. Quan el joc acaba, el jugador amb més punts guanya la partida.

A continuació es donen les regles del joc amb més detall:

image

Programació

En el web https://pacman.jutge.org trobareu el material necessari per programar el joc en C++. En concret, hi teniu tots els fitxer 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. 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 tenen aquest software instal·lat.

Amb Debian o Ubuntu, amb una instrucció del tipus

sudo apt-get install build-essential chromium-browser

tindreu tot el que us cal.

Amb Mac, tindreu tot el que us cal si instal·leu XCode des de l’App Store.

Amb Windows, hauria de ser fàcil. Si algú fa el favor de dir-m’ho, ho publicaré.

Com fer un jugador

Per fer un jugador, copieu primer el fitxer PlayerNull.cc o PlayerDemo.cc a un fitxer XXX.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, PacLady.

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

Finalment, heu d’implementar el vostre jugador tot completant la classe PLAYER_NAME que hereda 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 vostre classe, podeu afegir camps (variables) per recordar l’estat d’una ronda a l’altra, podeu afegir mètodes (o funcions) per descompondre el vostre programa, ètc.

Fixeu-vos que la vostra classe ha de continir 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.

Com executar i veure partides localment

  1. Editant el Makefile podeu incorporar el fitxer AIDummy-SISTEMA.o (segons el sistema que tingeu) a la compilació per a poder usar el Dummy a les vostres partide. Podeu fer el mateix amb els fitxers .o d’altres jugadors.

  2. Executeu make all per compilar tots els fitxers que calguin i crear l’executable PacMan.

  3. Disputeu la partida amb una comanda com ara ./Game Demo PacLady -i demo.cnf -o partida.pac. Aquí, el primer jugador serà Demo, el segon PacLady i la partida començarà amb la descripció demo.cnf i el resultat quedarà a partida.pac.

  4. Visualitzeu la partida executant ./viewer.sh partida.pac, que buscarà un navegador i l’obrirà.

Podeu obtenir la llista de paràmetres del programa PacMan amb ./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 del jugadors que volgueu enviar al web del joc han de complir certes limitacions:

Estructures de dades

Per saber com consultar el tauler, doneu un cop d’ull a les operacions públiques de la class @Board@ del fitxer @Board.hh@. Per saber com donar les accions, doneu un cop d’ull a les operacions públiques de la class @Action@ del fitxer @Action.hh@. Fixeu-vos que només podeu utilitzar les operacions públiques d’aquestes classes.

Consells

Us recomanem seguir els consells següents: