18
Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca CdL Ingegneria Energetica Università del Sannio 1 Prof. G. A. Di Lucca - Univ. del Sannio Elementi di Informatica 1 Giochiamo a Mastermind Mastermind o Master Mind è un gioco da tavolo di abilità mentale (di crittoanalisi) per due giocatori: un giocatore, il "decodificatore", deve indovinare il codice segreto composto dal suo avversario, detto "codificatore". Prof. G. A. Di Lucca - Univ. del Sannio Elementi di Informatica 2 Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare. Dopo che il codificatore ha composto il codice, il decodificatore fa il suo primo tentativo, cercando di indovinare il codice. Il codificatore, appena il suo avversario ha completato il tentativo, fornisce degli aiuti indicando : con piolini neri, il numero di piolini colorati giusti al posto giusto. con pioli bianchi, il numero di piolini colorati giusti ma messi al posto sbagliato. Non viene indicato quali piolini sono giusti o sbagliati ma solo quanti. Se il decodificatore riesce ad indovinare il codice entro il numero di tentativi predeterminati (solitamente 10) allora quest'ultimo vince la partita, altrimenti vince il codificatore.

Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

1

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 1

Giochiamo a Mastermind

Mastermind o Master Mind è un gioco da tavolo di abilità mentale (di

crittoanalisi) per due giocatori: un giocatore, il "decodificatore", deve

indovinare il codice segreto composto dal suo avversario, detto "codificatore".

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 2

Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la

formazione del codice da indovinare.

Dopo che il codificatore ha composto il codice, il decodificatore fa il suo

primo tentativo, cercando di indovinare il codice.

Il codificatore, appena il suo avversario ha completato il tentativo, fornisce

degli aiuti indicando :

• con piolini neri, il numero di piolini colorati giusti al posto giusto.

• con pioli bianchi, il numero di piolini colorati giusti ma messi al posto

sbagliato.

Non viene indicato quali piolini sono giusti o sbagliati ma solo quanti. Se il

decodificatore riesce ad indovinare il codice entro il numero di tentativi

predeterminati (solitamente 10) allora quest'ultimo vince la partita, altrimenti

vince il codificatore.

Page 2: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

2

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 3

Giochiamo a Mastermind

Tentativi del

decodificatore

Codice da indovinare

Indicazioni del

codificatore

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 4

Esempio Mastermind Analisi e Specifica

Definizione del problema: Sviluppare un programma per giocare con una

versione semplificata di Mastermind.

Il codificatore è il computer che formula un codice formato da tre numeri interi, ciascuno

compreso tra 0 e 9.

Il decodificatore deve indovinare i tre numeri immessi dal codificatore con la stessa

sequenza di immissione. Il decodificatore ha a disposizione un solo tentativo.

Il risultato deve indicare quali numeri sono stati indovinati nella giusta posizione:

• se il numero indovinato è giusto e nella stessa posizione del codice ciò è indicato con il

segno +

• se il numero indovinato appartiene al codice ma non è nella stessa posizione indicare ciò

con il segno =

• se il numero non è nessuno dei tre da indovinare indicare ciò con il segno –

Se il codice è indovinato deve essere visualizzato il messaggio: COMPLIMENTI HAI

VINTO, altrimenti è visualizzato il messaggio: MI DISPIACE NON HAI VINTO

Page 3: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

3

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 5

CODIFICATORE

3 9 7

9 2 7

DECODIFICATORE

= - +

Risultato

MI DISPIACE NON HAI VINTO

Esempio Mastermind

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 6

CODIFICATORE

3 9 7

3 9 7

DECODIFICATORE

+ + +

Risultato

COMPLIMENTI HAI VINTO

Esempio Mastermind

Page 4: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

4

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 7

Analisi e Specifica

Definizione dei dati del problema:

I: i numeri da indovinare generati a caso dal computer, i numeri

indovinati immessi dal decodificatore

Pi: i numeri da indovinare devono essere compresi tra 0 e 9

U: indicazione se ciascun numero indovinato, immesso dal

decodificatore è uguale a quello da indovinare in quella stessa posizione,

messaggio “COMPLIMENTI HAI VINTO” o “MI DISPIACE NON

HAI VINTO”

Pu: i caratteri per indicare se il numero del decodificatore è giusto o

meno sono solo ‘+’, ‘=‘, ‘-’

Esempio Mastermind

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 8

Nome variabile Descrizione Tipo

indovina1 Primo numero da indovinare INT

indovina2 Secondo numero da indovinare INT

indovina3 Terzo numero da indovinare INT

indovinato1 Primo numero indovinato INT

indovinato2 Secondo numero indovinato INT

indovinato3 Terzo numero indovinato INT

Tabella delle variabili di ingresso

Esempio Mastermind

Page 5: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

5

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 9

Nome variabile Descrizione Tipo

pos1 Risultato confronto coppia numeri in prima posizione CHAR

pos2 Risultato confronto coppia numeri in seconda posizione CHAR

pos3 Risultato confronto coppia numeri in terza posizione CHAR

Tabella delle variabili di uscita

Esempio Mastermind

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 10

Progettazione

Descrizione del metodo di elaborazione:

• sono generati casualmente dal computer i tre numeri formanti il codice da

indovinare

• se ciascuno di essi è compreso tra 0 e 9 si continua altrimenti si visualizza

messaggio di errore e si termina l’esecuzione del programma

• si leggono i tre numeri immessi dal secondo giocatore

• si confronta ciascun numero del secondo giocatore con quelli immessi dal

primo giocatore:

• se un numero del secondo giocatore è uguale a quello nella stessa

posizione immesso dal primo giocatore si pone posi = ‘+’

• se un numero del decodificatore è uguale a quello del codificatore ma

non nella stessa posizione si pone posi = ‘=’

• se un numero del secondo giocatore non è uguale a nessuno di quelli

del secondo giocatore ma non nella stessa posizione si pone posi = ‘-’

Esempio Mastermind

Page 6: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

6

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 11

• si visualizzano i valori di posi e li si analizza

• se tutti i valori di posi sono uguali a ‘+’ allora si visualizza il messaggio

“COMPLIMENTI HAI VINTO !!! “ altrimenti si visualizza il messaggio

"MI DISPIACE NON HAI VINTO !”

• Si visualizza il codice generato dal computer e quello inserito dal

decodificatore

Esempio Mastermind

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 12

… si usa la funzione rand() della libreria <stdlib.h>

#include <stdio.h>

#include <stdlib.h>

main ()

{int a;

printf ("Generazione random di un numero intero \n");

a = rand() %70; //la funzione rand() genera in modo random un numero

// intero; l’applicazione di %70 fa in modo che il numero

// generato sia modulo 70, ossia compreso tra 0 e 69.

printf ("Numero = %d \n", a);

}

Generazione casuale (random) di un numero intero in C

Page 7: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

7

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 13

/* Programma per simulare il risultato del lancio di un dado */

#include <stdio.h>

#include <stdlib.h>

main ()

{ int faccia_dado;

faccia_dado = rand() % 6; //genera un numero casuale fra 0 e 5

faccia_dado++; // per ottenere un valore tra 1 e 6

printf(“Faccia_dado = %d\n",faccia_dado);

system("Pause");

}

Generazione casuale (random) di un numero intero in C

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 14

… Se eseguiamo il programma più volte si ottiene sempre lo stesso

risultato!!!

… ciò è dovuto al fatto che rand() genera numeri pseudo-casuali, cioè

numeri che "sembrano" casuali …

Affinchè ogni esecuzione del programma generi un diverso valore deve

essere effettuata la ‘randomizzazione’ della funzione, ovvero inizializzare il

generatore di numeri pseudo-casuali usando un valore che viene detto ‘seme’

La randomizzazione può essere fatta usando la funzione srand(), che

richiede un parametro di input di tipo unsigned (intero senza segno), che

funge da seme.

La funzione time() della libreria time.h è solitamente usata, con parametro

NULL (o zero) , per generare il seme; essa fornisce un valore unsigned

calcolato in base all'ora corrente del giorno, espressa in secondi.

Generazione casuale (random) di un numero intero in C

Page 8: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

8

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 15

// Programma per simulare il risultato del lancio di un dado - randomizzato

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

main ()

{ int lancio1, lancio2;

srand(time(NULL)); //inizializza il generatore di numeri random

// lancia il dado 2 volte e mostra il risultato

lancio1= rand() % 6; //genera un numero casuale fra 0 e 5

lancio1++; // per ottenere un valore tra 1 e 6

lancio2= rand() % 6;

lancio2++;

printf(“Primo Lancio = %d \n Secondo Lancio= %d\n", lancio1, lancio2);

system("Pause");

}

Generazione casuale (random) di un numero intero in C

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 16

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

main ()

{

// MasterMind

int indovina1, indovina2, indovina3;

int indovinato1, indovinato2, indovinato3;

char pos1, pos2, pos3;

printf (“CODIFICATORE\n");

srand(time(NULL));

indovina1 = rand() % 10; // genera un numero casuale compreso tra 0 e 9

indovina2 = rand() % 10;

indovina3 = rand() % 10;

printf (“ Il Codificatore ha inserito il codice da indovinare\n");

Esempio Mastermind

- il programma in C

Page 9: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

9

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 17

printf (“\n DECODIFICATORE \n");

printf ("Immettere TRE numeri compresi tra 0 e 9 \n");

printf (“Immettere il PRIMO numero:\n");

scanf ("%d", &indovinato1);

printf (" Immettere il SECONDO numero:\n");

scanf ("%d", &indovinato2);

printf (" Immettere il TERZO numero:\n");

scanf ("%d", &indovinato3);

if (indovinato1== indovina1)

pos1= '+';

else

if ((indovinato1==indovina2) || (indovinato1==indovina3))

pos1= '=';

else pos1= '-';

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 18

if (indovinato2==indovina2)

pos2= '+';

else

if ((indovinato2==indovina1) || (indovinato2==indovina3))

pos2= '=';

else pos2= '-';

if (indovinato3==indovina3)

pos3= '+';

else

if ((indovinato3==indovina1) || (indovinato3==indovina2))

pos3= '=';

else pos3= '-‘;

Page 10: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

10

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 19

printf (“Le Indicazioni del Codificatore sono:\n”);

printf ("%c, %c, %c \n", pos1, pos2, pos3);

if ((pos1=='+') && (pos2=='+') && (pos3=='+'))

printf("COMPLIMENTI HAI VINTO !!! \n");

else

printf ("MI DISPIACE NON HAI VINTO !\n");

printf("\nCODICE da Indovinare:");

printf("\nIndovina1 = %d - Indovina2 = %d - Indovina3 = %d\n", indovina1,

indovina2, indovina3);

printf("\nCodice immesso dal CODIFICATORE\n");

printf("\nIndovinato1 = %d - Indovinato2 = %d - Indovinato3 = %d\n",

indovinato1, indovinato2, indovinato3);

}

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 20

Page 11: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

11

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 21

Esempio Mastermind – nuova versione

Analisi e Specifica

Definizione del problema: Sviluppare un programma per giocare con una versione

semplificata di Mastermind.

Il codificatore è il computer che formula un codice formato da tre numeri interi, ciascuno

compreso tra 0 e 9.

Il decodificatore deve indovinare i tre numeri immessi dal codificatore con la stessa

sequenza di immissione. Il decodificatore ha a disposizione cinque tentativi.

Il risultato deve indicare, per ogni tentativo, quali numeri sono stati indovinati nella giusta

posizione:

• se il numero indovinato è giusto e nella stessa posizione del codice ciò è indicato con il

segno +

• se il numero indovinato appartiene al codice ma non è nella stessa posizione indicare ciò

con il segno =

• se il numero non è nessuno dei tre da indovinare indicare ciò con il segno –

Se il codice è indovinato deve essere visualizzato il messaggio: COMPLIMENTI HAI

VINTO, altrimenti è visualizzato il messaggio: MI DISPIACE NON HAI VINTO

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 22

Analisi e Specifica

Definizione dei dati del problema:

I: i numeri da indovinare generati a caso dal computer, i numeri

indovinati immessi dal decodificatore

Pi: i numeri da indovinare devono essere compresi tra 0 e 9

U: indicazione se ciascun numero indovinato, immesso dal

decodificatore è uguale a quello da indovinare in quella stessa posizione,

messaggio “COMPLIMENTI HAI VINTO” o “MI DISPIACE NON

HAI VINTO”

Pu: i caratteri per indicare se il numero del decodificatore è giusto o

meno sono solo ‘+’, ‘=‘, ‘-’

Esempio Mastermind nuova versione

Page 12: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

12

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 23

Nome variabile Descrizione Tipo

indovina1 Primo numero da indovinare INT

indovina2 Secondo numero da indovinare INT

indovina3 Terzo numero da indovinare INT

indovinato1 Primo numero indovinato INT

indovinato2 Secondo numero indovinato INT

indovinato3 Terzo numero indovinato INT

Tabella delle variabili di ingresso

Esempio Mastermind nuova versione

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 24

Nome variabile Descrizione Tipo

pos1 Risultato confronto coppia numeri in prima posizione CHAR

pos2 Risultato confronto coppia numeri in seconda posizione CHAR

pos3 Risultato confronto coppia numeri in terza posizione CHAR

Tabella delle variabili di uscita

Esempio Mastermind nuova versione

Page 13: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

13

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 25

Nome variabile Descrizione Tipo

Trovato il decodificatore ha trovato il codice BOOL

Nrotent Numero tentativi effettuati INT

Tabella delle variabili di algoritmo

Esempio Mastermind nuova versione

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 26

Progettazione

Descrizione del metodo di elaborazione:

1. sono generati casualmente dal computer i tre numeri formanti il codice

da indovinare

2. se ciascuno di essi è compreso tra 0 e 9 si continua altrimenti si

visualizza messaggio di errore e si termina l’esecuzione del programma

3. si inizializza ad uno il numero di tentativi ed a FALSO il valore di

trovato

4. mentre il numero di tentativi è minore o uguale a cinque e trovato è

FALSO ripetere:

5. si leggono i tre numeri immessi dal secondo giocatore

Esempio Mastermind nuova versione

Page 14: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

14

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 27

5. si confronta ciascun numero del secondo giocatore con quelli immessi

dal primo giocatore:

a) se un numero del secondo giocatore è uguale a quello nella stessa

posizione immesso dal primo giocatore si pone posi = ‘+’

b) se un numero del secondo giocatore è uguale a quello del secondo

giocatore ma non nella stessa posizione si pone posi = ‘=’

c) se un numero del secondo giocatore non è uguale a nessuno di quelli

del secondo giocatore ma non nella stessa posizione si pone posi = ‘-

6. si stampano i valori di posi

7. se tutti i valori di posi sono uguali a ‘+’ allora si pone la variabile

trovato uguale a VERO altrimenti

• si visualizza il messaggio “CODICE NON TROVATO! RIPROVA

CON UN ALTRO TENTATIVO”;

• si incrementa di uno il numero di tentativi e si ripetono le

istruzioni dal punto 4) in poi

Esempio Mastermind nuova versione

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 28

8. All’uscita dal ciclo, se la variabile trovato è uguale a VERO si stampa il

messaggio “COMPLIMENTI HAI VINTO !”, altrimenti il messaggio

“MI DISPISACE NON HAI VINTO !”

9. Si stampano i valori del codice generato dal computer e dell’ultimo

codice immesso dal decodificatore

Esempio Mastermind

Page 15: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

15

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 29

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

main ()

{ // MasterMind

int indovina1, indovina2, indovina3;

int indovinato1, indovinato2, indovinato3;

int pos1, pos2, pos3, risultato;

int nroTentativi, trovato;

printf ("CODIFICATORE\n");

srand(time(NULL));

indovina1 = rand() % 10;

indovina2 = rand() % 10;

indovina3 = rand() % 10;

printf (" Il Codificatore ha inserito il codice da indovinare\n");

Esempio Mastermind

- il programma in C

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 30

printf ("\n DECODIFICATORE \n");

trovato=0;

nroTentativi=1;

while ((nroTentativi <= 5) && (trovato==0))

{

printf("\n\nTentativo n.ro %d :\n", nroTentativi);

printf ("Immettere TRE numeri compresi tra 0 e 9 \n");

printf ("Immetti il PRIMO numero\n");

scanf ("%d", &indovinato1);

printf ("Immetti il SECONDO numero\n");

scanf ("%d", &indovinato2);

printf ("Immetti il TERZO numero\n");

scanf ("%d", &indovinato3);

Page 16: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

16

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 31

if (indovinato1==indovina1) pos1='+';

else

if ((indovinato1==indovina2) || (indovinato1==indovina3))

pos1='=';

else pos1='-';

if (indovinato2==indovina2) pos2='+';

else

if ((indovinato2==indovina1) || (indovinato2==indovina3))

pos2='=';

else pos2='-';

if (indovinato3==indovina3) pos3='+';

else

if ((indovinato3==indovina1) || (indovinato3==indovina2))

pos3='=';

else pos3='-';

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 32

printf ("Le Indicazioni del Codificatore sono:\n");

printf("%c, %c, %c \n", pos1, pos2, pos3);

if ((pos1=='+') && (pos2=='+') && (pos3=='+'))

trovato=1;

else

{ printf ("CODICE NON TROVATO! \n");

if (nroTentativi < 5)

printf ("\n RIPROVA CON UN ALTRO TENTATIVO\n");

nroTentativi++;

}

} // fine ciclo while

if(trovato==1)

printf("COMPLIMENTI HAI VINTO !!! \n");

else

printf ("MI DISPIACE NON HAI VINTO !\n");

Page 17: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

17

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 33

printf("\nCODICE da Indovinare:");

printf("\nIndovina1 = %d - Indovina2 = %d - Indovina3 = %d\n", indovina1,

indovina2, indovina3);

printf("\nCodice immesso dal CODIFICATORE\n");

printf("\nIndovinato1 = %d - Indovinato2 = %d - Indovinato3 = %d\n\n",

indovinato1, indovinato2, indovinato3);

system("Pause");

}

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 34

Lo studente modifichi il programma del gioco Master Mind con massimo 5,

o più, tentativi usando un ciclo a condizione finale invece di quello a

condizione iniziale …

… e verificando che siano rispettate le precondizioni sui valori di input del

decodifcatore, facendo ripetere l’input se esse non sono soddisfatte …

Page 18: Giochiamo a Mastermind · 2016-11-04 · Giochiamo a Mastermind La versione più diffusa del gioco usa dei piolini di 6 colori differenti per la formazione del codice da indovinare

Elementi di Informatica a.a. 2016/17 - Prof. G.A. Di Lucca

CdL Ingegneria Energetica – Università del Sannio

18

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 35

printf ("Immettere TRE numeri compresi tra 0 e 9 \n");

do

{

printf ("Immetti il PRIMO numero\n");

scanf ("%d", &indovinato1);

}

while ((indovinato1<0) || (indovinato1>9)

Prof. G. A. Di Lucca - Univ. del Sannio

Elementi di Informatica 36

Modificare il programma del gioco Master Mind:

• permettendo al decodificatore di effettuare al massimo 5 tentativi

(usando un ciclo a condizione iniziale …)

• verificando che siano rispettate le precondizioni sui valori di input del

decodifcatore, facendo ripetere l’input se esse non sono soddisfatte

• Usando opportuni array per memorizzare:

• I valori del codice

• I valori del decodificatore

• I ‘suggerimenti’ del codificatore (risultati della verifica dei valori

del decodificatore rispetto ai valori del codice

• Strutturando il programma con sottoprogrammi associati a:

• Generazione casuale del codice da parte del codificatore

• lettura dei valori del decodificatore

• Verifica dei valori del decodificatore rispetto al codice

• Stampare i risultati della verifica

Esempio Mastermind

- il programma in C con sottoprogrammi e array -