Tema 1

Challenge 2008

Descrizione e specifiche del Tema 1

Precisazioni integrative, a seguito di quesiti ricorrenti.

File a supporto del Tema 1

Classe Cell ed interfaccia Tema1Interface

Generatore e visualizzatore di labirinti: materiale contenuto in un unico file jar tema1.jar

Guida essenziale all'uso di un file jar

Un file jar contiene, zippate, una o più classi Java (file .class), oltre ad altri eventuali file. Per compilare una propria classe sorgente Pippo.java che fa uso di risorse contenute in un file jar pluto.jar digitare, al prompt (si assume che tutto il materiale sia nella cartella corrente):

javac -cp "pluto.jar" Pippo.java

Per eseguire il risultato della compilazione:

java -cp ".;pluto.jar" Pippo

Ci sono diverse altre maniere di ottenere lo stesso risultato, ad esempio configurando opportunamente la variabile classpath nella shell o nell'IDE in uso. Un'altra possibilità sta nello scompattare il file jar, espandendolo nei vari file .class ivi contenuti.

Generatore di labirinti

Esempio di uso:

MazeGenerator gen = new MazeGenerator(righe, colonne);
boolean[][] labirinto = gen.generate();

Il labirinto generato può essere utilizzato come input per il test del proprio contributo. Il generatore non fornisce possibili caselle di ingresso/uscita, che vanno individuate autonomamente, eventualmente con l'ausilio del visualizzatore di labirinti.

Visualizzatore di labirinti

Il suo uso è molto semplice:

new MazeVisualizer(labirinto);

ove labirinto è una matrice boolean[][], ad esempio generata attraverso la classe MazeGenerator. La visualizzazione sfrutta dei pannelli sui quali sono registrati dei ToolTip. In pratica, durante la visualizzazione, posizionando il puntatore del mouse su una particolare casella del labirinto, si otterrà, dopo pochi istanti, la visualizzazione di un apposito ToolTip che fornisce le coordinate (riga, colonna) della casella puntata.

Su alcune piattaforme la costruzione della finestra da parte del visualizzatore potrebbe risultare lenta, soprattutto per i labirinti di grande dimensione. Ciò è causato dalla registrazione di (#righe)*(#colonne) pannelli indipendenti, ciascuno col proprio ToolTip.

 


Invio contributi (termini di invio scaduti)