Activitats
Èxits crítics
L’objectiu d’aquesta activitat és, a partir d’un programa modular, saber triar on afegir noves funcionalitats de manera que se’n tregui màxim profit i mantenint els principis de modularitat inicials.
Es vol modificar el programa que ha servit com exemple als continguts d’aquest apartat afegint la regla següent. En mesurar el grau d’èxit d’una estratègia, hi ha d’haver una possibilitat que succeeixi un èxit crític. Quan això succeeix, en grau d’èxit es duplica. La probabilitat que això passi és igual al nivell de lluitador que duu a terme l’estratègia, en tant per cent. Per exemple, si és nivell 2, té una probabilitat de 2 sobre 100, un 2%.
Modifiqueu el programa per assolir això de manera que representi el mínim de modificacions al programa original. En fer-ho, mantingueu els principis de modularitat per a aquest programa, creant cada nou mètode que creieu necessari a la classe que li correspon.
Seleccionar un nom
L’objectiu d’aquesta activitat és, a partir d’un programa modular, saber triar on afegir noves funcionalitats de manera que se’n tregui màxim profit i mantenint els principis de modularitat inicials.
Modifiqueu el programa que ha servit com exemple als continguts d’aquest apartat perquè, a l’inici, el jugador pugui triar el seu nom d’entre tots els disponibles dins el joc, incloent els de tots els possibles adversaris, enlloc de dir-se sempre “Aventurer”. Com en el cas del combat, el jugador ha de saber que aquest existeix. A mesura que va fent partides, pot anar aprenent nous noms. En fer-ho, mantingueu els principis de modularitat per a aquest programa, creant cada nou mètode que creieu necessari a la classe que li correspon.
Pocions de curació
L’objectiu d’aquesta activitat és, a partir d’un programa modular, saber triar on afegir noves funcionalitats de manera que se’n tregui màxim profit i mantenint els principis de modularitat inicials.
Ara mateix, a partir del programa que ha servit com a exemple als continguts d’aquest apartat, el joc pot ser una mica difícil, ja que el jugador no es guareix entre combats. Modifiqueu el programa de manera que el jugador tingui dues pocions de curació. El jugador ara disposa d’una nova estratègia de lluita consistent en usar-ne una. Quan ho fa, recupera tots els seus punts de vida, independentment de l’estratègia triada pel seu adversari durant aquella ronda. Si intenta usar-ne una quan ja no li queden, el programa dirà que no s’ha pogut dur a terme l’estratègia i rebrà dany si l’adversari tria atacar (en la resta d’estratègies, no passa res).
En fer-ho, mantingueu els principis de modularitat per a aquest programa, creant cada nou mètode que creieu necessari a la classe que li correspon.
Les torres de Hanoi
L’objectiu d’aquesta activitat és estudiar un nou problema basat en una solució recursiva i veure com solucionar-lo.
Un dels problemes clàssics on una solució recursiva és molt més elegant i fàcil de plantejar que qualsevol altre mètode és l’anomenat “Torres de Hanoi”. En aquest es disposa de tres barres, dues de les quals estan buides i una amb un cert nombre de discos de diferent mida apilats, de manera que a sobre de cadascun d’ells sempre hi ha un disc de mida inferior. Mai pot haver-hi a sobre d’un disc un altre de mida superior. L’objectiu és passar tots els discos d’una barra a una altra, movent els discos d’un en un, pas a pas. A cada moviment, només es pot moure un disc que estigui en la posició superior d’alguna barra, i sempre de manera que es compleixi la condició descrita.
Cerqueu informació més detallada sobre aquest problema, estudieu atentament la seva solució recursiva i plantegeu un programa en Java que mostri la llista de moviments (“moure disc de torre X a torre Y”) que cal fer per resoldre el cas de 6 discos.
Les torres de Hanoi detallades
L’objectiu d’aquesta activitat és entendre quin és l’ordre com s’encadenen les invocacions als mètodes recursius.
Feu una nova versió del programa que soluciona les torres de Hanoi, però en aquest cas, en lloc d’enumerar els moviments, el que ha de mostrar és l’evolució de les torres al llarg de tot el procés. Per representar les torres, es poden usar cadenes de text, de manera que els dos primers caràcters diuen el nom de la torre (“A:”, “B:”, “C:”) i la resta son números que representen els discos.
Tingueu en compte que aquest problema és més complicat que la versió on només cal mostrar les passes, per la qual cosa aquí teniu una pista: us caldrà representar les torres usant variables globals.
Si es planteja per al cas de 4 discos, el programa podria mostrar:
A:6543 B: C: A:654 B: C:3 A:65 B:4 C:3 A:65 B:43 C: A:6 B:43 C:5 A:63 B:4 C:5 A:63 B: C:54 A:6 B: C:543 A: B:6 C:543 A: B:63 C:54 A:4 B:63 C:5 A:43 B:6 C:5 A:43 B:65 C: A:4 B:65 C:3 A: B:654 C:3 A: B:6543 C: