Implementare il gioco dell'impiccato.


- Si hanno masimo 6 tentativi, ogni volta che si sbaglia una lettera diminuisce il numero di tentantivi, se i tentativi si azzerano si perde;
- Oltre alle singole parole si devono poter indovinare anche stringhe, ad esemprio si pu˛ indovinare solo hello ma anche hello world;
- Gli spazii presenti nell'eventuale stringa devono essere forniti dal programma, nella parola da indovinare, e non inseriti dall'utente.
- Ogni lettera della parola da indovinare deve essere visualizzata con un trattino a meno che non la si indovini.


La mia soluzione:


Codice PHP:
#include <stdio.h>#include <conio.h>#include <string.h>
// LA PAROLA DA INDOVINARE#define parola "hello world"
void main(){     char lutente[strlen(parola)];     int iok=0esatte=0tent=6spazi=0inserito=0;          // scorro per la dimensione della parola da indovinare     for(i=0;i<strlen(parola);i++)     {          // se il carattere non Ŕ uno spazio devo sostituirlo con un trattino per nasconderlo        // altrimenti inserisco lo spazio, in quanto gli spazi non devono essere indovinati        if(parola[i]!=' ')           utente[i]='_';        else         {           utente[i]=' ';                      // incremento la variabile che mi indica il numero di spazi nella stringa           spazi++;        }     }          // inserisco nell'ultimo elemento il carattere di fine riga     utente[strlen(parola)]='\n';       do{          system("cls");          printf("\n");                    // stampo la parola vuota o parziale          for(i=0;i<strlen(parola);i++)                 printf(" %c ", utente[i]);                        printf("\n\n\n Tentativi rimasti: %d",tent);              printf("\n\n Inserisci una lettera: ");                    // acquisisco la lettera          l=getche();                    for(i=0;i<strlen(parola);i++)          {              // se il carattere acquisito Ŕ stato giÓ inserito in precedenza imposto               // la variabile a 1 per indicarmelo ed interrompo il ciclo              if(utente[i]==l)              {                 inserito=1;                 break;              }          }                    // se il carattere Ŕ stato giÓ inserito non faccio nessun controllo,           // altrimenti proseguo con i controlli          if(inserito==1)          {             printf("\n\n Carattere gia' inserito!");             inserito=0;          }          else          {              // setto a 0 la variabile che mi indica se la lettera Ŕ esatta              ok=0;                        // scorro per la dimensione della parola da indovinare              for(i=0;i<strlen(parola);i++)              {                      // se il carattere puntato Ŕ uguale a quello inserito e non Ŕ stato giÓ inserito                  if(parola[i]==l&&utente[i]!=l)                                 {   // imposto nella stringa d'appoggio il carattere esatto                      utente[i]=l;                                         // setto la variabile a 1 per indicare che la lettera Ŕ corretta                      ok=1;                                         // incremento il contatore delle lettere esatte                      esatte++;                  }              }                            // se Ŕ uno Ŕ corretta altrimenti no              if(ok)                 printf("\n\n Lettera esatta!");              else              {                 printf("\n\n Lettera errata!");                              // decremento il contatore dei tentativi                 tent--;              }           }          sleep(800);               // ripeti quando il contatore delle lettere esatte Ŕ diverso dalle lettere totali della parola      // meno il numero di spazi, dato che non devono essere indovinati, e quando ci sono ancora      // dei tentativi a disposizione     }while(esatte!=strlen(parola)-spazi&&tent>0);          // se il numero dei tentativi Ŕ maggiore di 0 siognifica che ha indovinato      // la parola prima di esaurirli altrimenti no!     if(tent>0)     {        system("cls");        printf("\n\n HAI VINTO!");        printf("\n\n La parola esatta e': %s", parola);     }     else     {        system("cls");         printf("\n\n HAI PERSO!");        printf("\n\n La parola esatta era: %s", parola);     }          printf("\n\n\n Premi un tasto per uscire");     getch();} 



Alcuni screen del programma in esecuzione: