Gioco dellimpiccato in C Casuccio Giuseppe Approccio modulare




![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”; .](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-5.jpg)
![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](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-6.jpg)
![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](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-7.jpg)






![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] *](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-14.jpg)







- Slides: 21

Gioco dell’impiccato in C Casuccio Giuseppe

Approccio modulare Parte operativa Parte grafica

Parte Operativa Come funziona il programma

Il programma sceglie una parola a caso dal dizionario presente in memoria
![int pparola puntatore char dizionario MAXPAROLE MAXLUNGPAROLE1 dizionario alfa beta gamma int *p_parola; /*puntatore*/ char dizionario [MAX_PAROLE] [MAX_LUNG_PAROLE+1]; dizionario = { “alfa”; “beta”; “gamma”; .](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-5.jpg)
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 vettvisibindice è VISIBILE stampa Come stampare la parola? Inizializzo un vettore di VISIBILITA’ Se vett_visib[indice] è VISIBILE stampa](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-6.jpg)
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 statolettera statolettera vettvisibMAXLUNGPAR1 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](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-7.jpg)
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 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; aggiorna_vett_visib(lettera); } else { num_errori++; esito = ERRORE; } } /* Memorizzare un vettore di lettere chiamate */

Parte Grafica “la schermata”

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 ): { 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
![printf Errori Rimanenti d n MAXERR errorifatti Stampaesitoprecedente GIA CHIAMATA printf (“ Errori Rimanenti: %d n”, MAX_ERR – errori_fatti); Stampa_esito_precedente(); * [GIA’ CHIAMATA] *](https://slidetodoc.com/presentation_image_h/8606c5c86f1edd864ff849f24126df1a/image-14.jpg)
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’è l’IMPICCATO (troppi errori); Ø Gioco Completato; Ø EOF (CTRL+Z)

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 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!

Fine presentazione
