DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli –...

10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Lab X: Battaglia Navale Navale Gianluca Durelli – [email protected] Marco D. Santambrogio – [email protected] Ver. aggiornata al 12 Maggio 2013

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli –...

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ArgomentiArgomenti

• Argomenti di questo laboratorio: Funzioni Strutture dati

• Obiettivo: Risolvere gli esercizi 1 e 2

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

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

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab X: Battaglia Navale Gianluca Durelli – durelli@elet.polimi.it Marco D. Santambrogio – marco.santambrogio@polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• BUON LAVORO!

10