DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab X: Battaglia Navale
Gianluca Durelli – [email protected]
Marco D. Santambrogio – [email protected]
Ver. aggiornata al 12 Maggio 2013
Argomenti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• Argomenti di questo laboratorio:
 Funzioni
 Strutture dati
• Obiettivo:
 Risolvere gli esercizi 1 e 2
2
Battaglia Navale
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
•
•
•
•
•
Definizione strutture dati
Inizializzazione partita
Disegna tabellone di gioco
Esegui mossa giocatore
Controlla vincitore
Gestione dell’intera partita
3
Esercizio 1 – Definizione strutture dati
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
•
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
Esercizio 2 – Inizializzazione partita
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Esercizio 3 – Disegna tabellone di gioco
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Esercizio 4 - Esegui mossa giocatore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Esercizio 5 – Controllo vincitore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Esercizio 6 – Gestione dell’intera partita
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
• 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
Scarica

V0 - PPT - Dipartimento di Elettronica ed informazione