Corso di Interfacce Utente - A.A. 2004-2005

PROGETTO DI LABORATORIO

Descrizione della classe Labirinto

La classe Java Labirinto implementa le strutture dati e le funzioni dell'applicazione relative alla creazione del labirinto e alla gestione dei movimenti di Teseo e del minotauro.

Costanti di classe

Metodi di classe

Questi metodi sono di classe (statici) e manipolano le direzioni:

Costruttore

Metodi di oggetto

Main

La classe ha un metodo main e dunque puo' essere eseguita. Richiede due numeri da linea di comando: il numero di celle in orizzontale e in verticale. Costruisce un labirinto con le dimensioni specificate e lo disegna su standard output.
Per esempio:
java Labirinto 4 3
puo' produrre questo output (la disposizione dei muri e' casuale e cambia ad ogni esecuzione):

+---+---+---+---+
|               |
|               |
|               |
+---+- -+- -+   +
|       | M |   |
|       | M |   |
|       | M |   |
+   +...+...+   +
|           | T
|           | T
|           | T
+---+---+---+---+

Avvertenze

La mossa di un personaggio da parte dell'utente si implementa chiamando cambiaDirXXX seguita da tentaMossaXXX. Se tentaMossaXXX ritorna false e mossaValida ritorna anch'essa false, allora bisogna avvertire l'utente che ha tentato una mossa non valida.

La mossa di un personaggio da parte del sistema si implementa chiamando muoviAutomXXX.

In ogni caso, dopo che il personaggio si e' mosso occorre chiamare fineGioco per controllare se il gioco e' finito. Se il gioco e' finito, per capire chi e' il vincitore bisogna chiamare le funzioni haVintoTeseo e haVintoMinotauro.

Il controllo di fine gioco e' necessario perche' eventuali chiamate a tentaMossaXXX o muoviAutomXXX continuano ad avere effetto sui personaggi anche se il gioco e' finito.

Il meccanismo automatico di movimento dei personaggi e' molto grezzo: non e' stata implementata nessuna strategia di gioco, semplicemente si sceglie di avanzare in una direzione a caso. Quindi non preoccupatevi se il sistema sembra giocare in modo stupido.