Gioco dellimpiccato in C Casuccio Giuseppe Approccio modulare

  • Slides: 21
Download presentation
Gioco dell’impiccato in C Casuccio Giuseppe

Gioco dell’impiccato in C Casuccio Giuseppe

Approccio modulare Parte operativa Parte grafica

Approccio modulare Parte operativa Parte grafica

Parte Operativa Come funziona il programma

Parte Operativa Come funziona il programma

Il programma sceglie una parola a caso dal dizionario presente in memoria

Il programma sceglie una parola a caso dal dizionario presente in memoria

int *p_parola; /*puntatore*/ char dizionario [MAX_PAROLE] [MAX_LUNG_PAROLE+1]; dizionario = { “alfa”; “beta”; “gamma”; .

int *p_parola; /*puntatore*/ char dizionario [MAX_PAROLE] [MAX_LUNG_PAROLE+1]; dizionario = { “alfa”; “beta”; “gamma”; . . . } randomize(); p_parola = dizionario[ random( MAX_PAROLE -1 ) ] lunghezza_parola = strlen(p_parola);

Come stampare la parola? Inizializzo un vettore di VISIBILITA’ Se vett_visib[indice] è VISIBILE stampa

Come stampare la parola? Inizializzo un vettore di VISIBILITA’ Se vett_visib[indice] è VISIBILE stampa ( parola[indice] ) Altrimenti stampa(“__”) aumenta incognite stampate;

typedef enum {NASCOSTA, VISIBILE} stato_lettera; stato_lettera vett_visib[MAX_LUNG_PAR+1]; /* tutte le entrate sono NASCOSTE tranne

typedef enum {NASCOSTA, VISIBILE} stato_lettera; stato_lettera vett_visib[MAX_LUNG_PAR+1]; /* tutte le entrate sono NASCOSTE tranne la prima e l’ultima*/ vett_visib[0] = VISIBILE; vett_visib[lung_par] = VISIBILE; /* DA AGGIORNARE OGNI LETTERA CHIAMATA */

leggi_lettera() Già chiamata? § Si: esito = GIA_CHIAMATA § No: E’ in parola? v

leggi_lettera() Già chiamata? § Si: esito = GIA_CHIAMATA § No: E’ in parola? v Si : esito = TROVATA; aggiorna vett_visib; v No: esito = NON_TROVATA; aumenta numero_errori;

leggi_lettera(); if (lettera_gia_chiamata(lettera)) esito = GIA_CHIAMATA; else { if (lettera_in_parola(lettera)) { esito = TROVATA;

leggi_lettera(); if (lettera_gia_chiamata(lettera)) esito = GIA_CHIAMATA; else { if (lettera_in_parola(lettera)) { esito = TROVATA; aggiorna_vett_visib(lettera); } else { num_errori++; esito = ERRORE; } } /* Memorizzare un vettore di lettere chiamate */

Parte Grafica “la schermata”

Parte Grafica “la schermata”

STAMPA LA FIGURA …blank… P-a-r-o-l-a …blank… rimanenti …blank…

STAMPA LA FIGURA …blank… P-a-r-o-l-a …blank… rimanenti …blank…

Stampa_figura_e_parola (int errori) { /* esempio con errori = MAX_ERRORI */ switch ( errori

Stampa_figura_e_parola (int errori) { /* esempio con errori = MAX_ERRORI */ switch ( errori ): { case MAX_ERRORI: --- Stampa_blank(); --- printf(“ _____ --- Stampa_blank(); --- printf(“ | | printf(“ | 0 Stampa_parola(); } } Stampa_blank rimanenti(); --- Stampa_blank(); --- printf(“ | -|- --- Stampa_blank(); --- printf(“ | / --- Stampa_blank(); --- printf(“___. ___

STAMPA LE INFORMAZIONI: Errori rimanenti ESITO PRECEDENTE Leggi nuova mossa

STAMPA LE INFORMAZIONI: Errori rimanenti ESITO PRECEDENTE Leggi nuova mossa

printf (“ Errori Rimanenti: %d n”, MAX_ERR – errori_fatti); Stampa_esito_precedente(); * [GIA’ CHIAMATA] *

printf (“ Errori Rimanenti: %d n”, MAX_ERR – errori_fatti); Stampa_esito_precedente(); * [GIA’ CHIAMATA] * [TROVATA] * [NON TROVATA] printf (“Inserisci una lettera: n”); leggi_lettera();

La stampa della pagina deve essere in un ciclo, che termina quando: Ø C’è

La stampa della pagina deve essere in un ciclo, che termina quando: Ø C’è l’IMPICCATO (troppi errori); Ø Gioco Completato; Ø EOF (CTRL+Z)

Alla fine si controlla il motivo per cui si è usciti dal ciclo:

Alla fine si controlla il motivo per cui si è usciti dal ciclo:

Se per troppi errori, stampa: IMPICCATO, la parola esatta era: stampa_parola( );

Se per troppi errori, stampa: IMPICCATO, la parola esatta era: stampa_parola( );

Se per il gioco completato, stampa: COMPLIMENTI, HAI VINTO! /* Il gioco è completato

Se per il gioco completato, stampa: COMPLIMENTI, HAI VINTO! /* Il gioco è completato se il numero di incognite stampate = 0 */

Se per il comando di EOF, stampa: Hai deciso di uscire!

Se per il comando di EOF, stampa: Hai deciso di uscire!

Fine presentazione

Fine presentazione