Esercizi preliminari all'esame di
Linguaggi e metodologie di programmazione
A.A. 2009-2010
A partire dalla versione "zuul-better" relativa al progetto didattico "world-of-zuul" risolvere gli
esercizi di esame di seguito riportati.
Ambientazione
L'orco Shrek deve salvare la Principessa Fiona, prigioniera nell'alta torre di un castello arroccato su
di un'altissima montagna, circondato da un lago e custodito da un drago.
A partire dal ponte levatoio (outside.gif), Shrek dovrà trovare la principessa (princess.gif), chiusa in
una stanza posta in fondo ad un corridoio (hallway.gif) in cima alla torre.
La porta della stanza è chiusa con una chiave perduta nel castello.
Dietro la porta della stanza della principessa il drago (dragon.gif) è pronto per la battaglia.
Gli altri ambienti del castello sono:
•
il cortile (courtyard.gif), al quale si accede superando il ponte levatoio;
•
la stanza del trono (throne-room.gif), confinante con il cortile e una rampa di scale
(stairs.gif).
•
la rampa di scale, confinante con la stanza del trono, con la stanza delle torture (scendendo
le scale) e con il corridoio che porta alla stanza della principessa (salendo le scale);
•
la stanza delle torture (dungeon.gif), alla quale si accede attraverso la rampa di scale.
Sessione di giugno 2010
Obiettivo del gioco
Shrek deve attraversare il castello alla ricerca della chiave che gli permetterà di aprire la porta della
stanza della principessa e salvare Fiona, dopo aver battuto il drago.
Capitolo 1: il castello
Fornire il videogioco di un'interfaccia grafica.
Ad ogni stanza dovrà essere associata un immagine che verrà visualizzata nel momento in cui il
giocatore vi farà accesso. L'inserimento dell'input utente dovrà avvenire per mezzo di un campo
testo (JtextField), come mostrato nella figura successiva:
Capitolo 2: una porta da aprire...
La chiave necessaria per aprire la porta della camera della principessa dovrà essere posizionata
casualmente in uno degli ambienti del castello (tranne che nella stanza della principessa,
ovviamente!) al momento dell'avvio del gioco. Implementare i comandi necessari (es. raccogli e
usa).
Capitolo 3: battaglia con il drago
Appena aperta la porta della stanza della principessa, il giocatore sarà attaccato dal drago. Vincerà il
duello chi, estraendo un numero casuale tra 1 e 10, otterrà il punteggio massimo. In caso di vittoria
di Shrek la principessa sarà libera, altrimenti il gioco terminerà.
Capitolo 4: refactoring - il lavoro “sporco” che qualcuno deve pur fare
Nel metodo processCommand della classe Game c'è una sequenza di comandi if utili a gestire il
comando corretto quando una parola (inserita dall'utente) viene riconosciuta come comando. Come
spiegato a lezione e a più riprese sottolineato dal testo di riferimento del corso, il limite di questa
soluzione è dato dalla necessità di aggiungere un ramo del comando if per ogni nuovo comando che
si intende aggiungere.
Modificare l'applicazione in modo da rendere la gestione dei comandi più modulare.
Sessione di luglio 2010
Obiettivo del gioco
Shrek deve attraversare il castello alla ricerca della chiave che gli permetterà di aprire la porta della
stanza della principessa e salvare Fiona, dopo aver battuto il drago in una battaglia fino all'ultimo
respiro.
Risolvere i capitoli (esercizi) 1, 2 e 4 relativi alla sessione di Giugno 2010. Inoltre risolvere i nuovi
capitoli sotto riportati.
Capitolo 5: tornare sui propri passi...
Implementare il comando back. Questo comando porta Shrek nella stanza precedentemente visitata.
Applicazioni ripetute del comando back, permettono al giocatore di percorrere a ritroso, e in modo
automatico, il percorso fino a quel punto intrapreso.
Suggerimento: usare una Stack per memorizzare il percorso di Shrek (cfr. API Java).
Capitolo 6: battaglia con il drago... ora si fa sul serio!
Appena aperta la porta della stanza della principessa, il giocatore sarà attaccato dal drago.
Shrek e il drago sono inizialmente dotati di 30 punti vita ciascuno.
La battaglia consiste in una serie di attacchi alternati (turni) che andranno a decrementare un certo
numero di punti vita all'avversario. Più precisamente ogni attacco toglierà un numero casuale di
punti vita (all'avversario ovviamente!) compreso tra 0 e 10.
Vincerà il duello chi per primo dei due contendenti azzererà i punti vita dell'avversario.
Il primo ad attaccare sarà il drago.
Esempio di combattimento:
Potenza dell'attacco
Punti vita Drago
Punti vita Shrek
Inizio combattimento
-
30
30
Turno 1 (attacco del drago)
4
30
26
Turno 1 (attacco di Shrek)
6
24
26
Turno 2 (attacco del drago)
8
24
18
Turno 2 (attacco di Shrek)
6
18
18
…
…
…
...
Sessione di settembre 2010
Obiettivo del gioco
Shrek deve attraversare il castello alla ricerca della chiave che gli permetterà di aprire la porta della
stanza della principessa e salvare Fiona, dopo aver battuto il principe Azzurro, il drago in una
battaglia fino all'ultimo respiro e prima che sia troppo tardi...
Risolvere i capitoli (esercizi) 1, 2 e 4 relativi alla sessione di Giugno 2010.
Risolvere i capitoli (esercizi) 5 e 6 della sessione di Luglio 2010.
Inoltre risolvere i nuovi capitoli sotto riportati.
Capitolo 7: un antagonista da battere
Shrek non è l'unico “cavaliere” presente nel castello. Anche il principe Azzurro è impegnato nel
salvataggio della principessa Fiona e non è disposto a lasciar passare un suo antagonista.
La posizione del principe Azzurro è determinata casualmente all'avvio del gioco e non cambia
durante la partita. Quando Shrek entra nella stanza in cui si trova il Principe Azzurro, sarà
immediatamente attaccato da quest'ultimo.
Il combattimento avverrà in accordo alle regole definite nel capitolo 6. I punti vita del Principe
Azzurro sono 15. In caso di vittoria del Principe Azzurro, la partita terminerà, altrimenti Shrek
potrà esplorare la stanza e continuare la sua avventura. A seguito di un duello con il Principe
Azzurro, i punti vita di Shrek NON saranno ripristinati.
Capitolo 8: il biscotto magico
In una delle stanze del castello, determinata casualmente all'avvio del gioco, è presente un biscotto
magico. Dopo aver raccolto il biscotto magico, Shrek potrà in qualsiasi momento (tranne che
durante un combattimento) mangiarlo per ripristinare completamente i suoi punti vita.
Nota: ovviamente ha senso al mangiare il biscotto magico nel caso in cui si sia incontrato e
sconfitto il Principe Azzurro.
Capitolo 9: apri e chiudi il libro delle favole
Aggiungere la funzionalità che permette di salvare la partita, in modo da poterla riprendere anche
dopo il riavvio dell'applicazione.
Sessione di febbraio 2011
Obiettivo del gioco
Shrek deve attraversare il castello alla ricerca della chiave che gli permetterà di aprire la porta della
stanza della principessa e salvare Fiona, dopo aver battuto il principe Azzurro, il drago in una
battaglia fino all'ultimo respiroe prima che sia troppo tardi...
Risolvere i capitoli (esercizi) 1, 2 e 4 relativi alla sessione di Giugno 2010.
Risolvere i capitoli (esercizi) 5 e 6 della sessione di Luglio 2010.
Risolvere i capitoli (esercizi) 7, 8 e 9 della sessione di Settembre 2010.
Inoltre risolvere i nuovi capitoli sotto riportati.
Capitolo 10: tempus fugit
Aggiungere un tempo limite al gioco. Se non si libera la principessa entro un certo numero di passi
il giocatore perde la partita. Un passo di gioco può essere liberamente definito (es. numero di
comandi immessi dal giocatore, oppure il numero di stanze visitate).
Capitolo 11: arrivano i nostri!
Ciuchino e il Gatto con gli Stivali corrono in soccorso di Shrek. Purtroppo per Shrek i due sono
piuttosto indisciplinati e si muovono continuamente nel castello: questo significa che ogni volta che
Shrek entra in un locale del castello ha probabilità 1/10 di incontrare ognuno dei due personaggi.
Quando Shrek incontra uno dei due amici (nulla vieta che li incontri entrambi nella stessa stanza)
potrà decidere se portarlo con se oppure no. Oltre alla chiave Shrek potrà portare con sé un solo
“oggetto”, dove gli oggetti possibili sono Ciuchino, il Gatto con gli Stivali e il biscotto magico.
Il Gatto con gli Stivali potrà essere d'aiuto a Shrek solo nell'eventuale combattimento con il Principe
Azzurro. Infatti nel caso in cui Shrek abbia con sé il Gatto con gli Stivali durante il combattimento
con il Principe Azzurro, i sui attacchi avranno forza raddoppiata (il Gatto con gli Stivali combatte a
fianco di Shrek).
Analogamente Ciuchino potrà risultare utile a Shrek solo nel combattimento con il Drago. Infatti
nel caso in cui Shrek abbia con sé Ciuchino durante il combattimento con il Drago, gli attacchi di
quest'ultimo avranno forza dimezzata (il Drago, di sesso femminile, sarà distratta dal fascino
irressistibile di Ciuchino).
Scarica

Esercizi preliminari all`esame di Linguaggi e