DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli –...
-
Upload
giraldo-pizzi -
Category
Documents
-
view
219 -
download
0
Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli –...
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab X: Battaglia NavaleLab X: Battaglia Navale
Gianluca Durelli – [email protected] D. Santambrogio – [email protected]
Ver. aggiornata al 12 Maggio 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ArgomentiArgomenti
• Argomenti di questo laboratorio: Funzioni Strutture dati
• Obiettivo: Risolvere gli esercizi 1 e 2
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Battaglia NavaleBattaglia Navale
• Definizione strutture dati• Inizializzazione partita• Disegna tabellone di gioco• Esegui mossa giocatore• Controlla vincitore• Gestione dell’intera partita
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 1 – Definizione strutture Esercizio 1 – Definizione strutture datidati
• Si definiscano le strutture dati per la gestione della battaglia navale: 2 Giocatori Ogni giocatore ha:
• Un nome• Un tabellone su cui posizionare le navi (TabelloneNavi)• Un tabellone su cui segnare i risultati delle sue mosse (colpito, affondato,
mancato) (TabelloneRisultati)• Un insieme di navi di diverso tipo e dimensione:
– Sottomarino: lunghezza 1– Incrociatore: lunghezza 2– Portaerei: lunghezza 4
Ogni nave:• Ha una posizione nel tabellone (x,y)• E’ messa in una direzione (orizzontale o verticale)• Può essere o meno affondata• E’ di un particolare tipo:
– Sottomarino, Incrociatore, Portaerei
• Regole generali: La dimensione del campo da gioco e il numero di navi per ogni tipo è
un parametro definibile a priori Le navi possono essere posizionate sul tabellone in orizzontale oppure
verticale Le navi non possono sovrapporsi tra loro
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 2 – Inizializzazione Esercizio 2 – Inizializzazione partitapartita
• Si scriva il codice necessario per dare inizio ad una partita: Richiesta dati dei giocatori:
• Nome• Posizione iniziale delle navi:
– Per ognuna delle navi da posizionare vengono richieste le coordinate x ed y e la direzione (orizzontale o verticale)
– La nave viene posizionata a partire dalla posizione x,y e muovendosi nel verso delle x crescenti (orizzontale) oppure y crescenti (verticale)
• Suggerimento: Si usino 2 funzioni:
• Una per la richiesta dei dati• Una per controllare che data una nave ed un tabellone questa non
vada a sovrapporsi a navi già presenti– In caso contrario si proceda alla richiesta di nuove corrdinate dove
posizionare la nave
• Nota: Non è necessario rappresentare graficamente le navi,
l’importante è inizializzare le strutture dati. La rappresentazione è oggetto del prossimo esercizio
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 3 – Disegna tabellone di Esercizio 3 – Disegna tabellone di giocogioco
• Si rappresenti il tabellone di gioco definito a valle dell’inizializzazione dell’esercizio 2
• Si sfruttino le funzioni già presenti nel file sorgente, e presentate a lezione: disegna_schermo disegna_linea …
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 4 - Esegui mossa Esercizio 4 - Esegui mossa giocatoregiocatore
• Scrivere la parte di codice necessaria a realizzare una mossa del gioco: Richiesta coordinate dove colpire Controllo risultato mossa:• Colpito• Colpito ed affondato• Mancato
Aggiornamento del TabelloneRisultati del giocatore che fa la mossa
Eventuale aggiornamento del TabelloneNavi dell’altro giocatore
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 5 – Controllo Esercizio 5 – Controllo vincitorevincitore
• Scrivere una funzione che determina se la partita è stata vinta da qualcuno oppure è necessario continuare a giocare: Una partita si dichiara vinta dal
giocatore A quando questo ha affondato tutte le navi del giocatore B
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Esercizio 6 – Gestione dellEsercizio 6 – Gestione dell’’intera intera partitapartita
• Scrivere una funzione che gestista la partita. La funzione combina le funzioni scritte negli esercizi precedenti: Inizializza le strutture dati Inizia un ciclo in cui ad ogni iterazione:
• Si disegna il tabellone• Viene chiesta la mossa al giocatore corrente• Il gioco viene aggiornato con il risultato della
mossa• Viene controllato se la partita ha un vincitore
– In questo caso il ciclo termina
Si stampano le informazioni relative al vincitore della partita
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• BUON LAVORO!
10