Gioco indovina il numero in C

Il seguente programma implementa il gioco, indovina il numero, ovvero viene generato un numero casuale tra MAX e MIN e l’utente deve cercare di indovinare tale numero. L’utente ha un numero prefissato di tentativi e di volta in volta il programma dirà se il numero cercato è più grande o più piccolo del numero inserito dall’utente.

Risulta utile definire delle variabili costanti come MAX e MIN usate per definire il range di valori del numero casuale, TENTATIVI usato per definire quanti tentativi l’utente ha per indovinare il numero.

L’esecuzione del programma si può suddividere in tre parti: la generazione casuale del numero, la gestione dei numeri inseriti dall’utente e termine del programma.

Per generare un numero casuale dobbiamo includere le librerie stdlib.h, time.h e chiamare la funzione srand( ) che permette di evitare la generazione dello stesso valore. Fatto questo, possiamo chiamare la funzione rand e per fare in modo che il numero sia compreso in un intervallo, dobbiamo utilizzare l’operatore modulo %, in particolare dobbiamo usare la seguente sintassi:

rand() % (MAX - MIN + 1) + MIN;

In questo modo il numero generato sarà sempre compreso tra MAX e MIN. 

Dopodiché dobbiamo gestire l’interazione con l’utente, e per far ciò, chiediamo all’utente di inserire un numero ed eseguiamo un ciclo while fino a che l’utente non indovina il numero cercato oppure termina tutti i suoi tentativi. Durante l’esecuzione del ciclo controlliamo se il numero cercato è più grande o più piccolo del numero inserito e chiediamo all’utente di inserire un nuovo numero. Una volta che l’utente ha terminato i tentativi usiamo una break per uscire dal ciclo. 

Una volta uscito dal ciclo while controlliamo il numero di tentativi a disposizione dell’utente, se zero, significa che l’utente non ha indovinato il numero, mentre se diverso da zero l’utente ha trovato il numero.

#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 1000 #define MIN 0 #define TENTATIVI 10 int main() {     srand(time(NULL));     int num, inserito, tentativi;     tentativi = TENTATIVI;     num = rand() % (MAX - MIN + 1) + MIN;     printf("Il computer ha generato un numero casuale, prova ad indovinarlo!\n");     printf("Hai %d tentativi. Inserisci un numero: ", TENTATIVI);     scanf("%d", &inserito);     while(inserito != num){         if(num > inserito){             printf("Il numero che stai cercando è più grande.\n");         }else{             printf("Il numero che stai cercando è più piccolo.\n");         }         tentativi--;         if(tentativi == 0)             break;         printf("Hai ancora %d tentativi/o a disposizione. Inserisci un numero: ", tentativi);         scanf("%d", &inserito);     }     if(tentativi == 0){         printf("Peccato hai terminato i tuoi tentativi. Il numero ricercato era: %d\n", num);     } else {         printf("Congratulazioni hai indovinato il numero. [%d]\n", num);     }     return 0; }