Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitā e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Gioco Impiccato
Forum - C/C++ - Gioco Impiccato

Avatar
disperata (Normal User)
Newbie


Messaggi: 1
Iscritto: 24/06/2011

Segnala al moderatore
Postato alle 16:53
Venerdė, 24/06/2011
Salve avrei un problema con la funzione cerca lettera vi posto tutto il codice cosė potete capire e risolvere il problema per una veloce analisi nei menų inserite 1 e poi 2 e iniziate a giocare scegliendo di inserire la lettera

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #define N 10
  6. #define DIM_CAT 110 //dimensione vettore per le categorie
  7.  
  8. typedef char stringa[30];
  9. typedef struct { char nome_giocatore[20];
  10.                  int numero_tentativi;
  11.                  int punteggio;}GIOCATORE;
  12.                  
  13. int numero_giocatori, scelta,lung,n;
  14.  
  15. GIOCATORE E[N];
  16.  
  17. stringa CATEGORIE[DIM_CAT];
  18.  
  19. char Lettere[50];
  20.  
  21. FILE *fp;
  22.  
  23. char lettera;
  24. char nomefile[30];
  25. char parola[30];
  26. char parola_segreta[100];
  27.  
  28. void gioco_standard(GIOCATORE E[N],int n);
  29. void Cerca_Parola(char nomefile[30],FILE *fp);
  30. void impostazioni(int numero_giocatori,GIOCATORE E[N],int n,char nomefile[30]);
  31. void Stampa_Omino(GIOCATORE E[N],int n);
  32. void Stampa_Parola(char parola[30], GIOCATORE E[N], int n,char nome[10]);
  33. int Menu_Partita(GIOCATORE E[N],int n);
  34. //void Schermata(GIOCATORE E[N],int n,char parola_segreta[100]);
  35. void Cerca_Lettera(GIOCATORE E[N],int n,char parola[30],char lettera,char Lettere[50]);
  36.  
  37. int main() {
  38. int x;
  39.   do {  
  40.     x=menu();
  41.     switch(x) {
  42.         case 1: {gioco_standard(E,N);
  43.                 break;}
  44.         case 2: impostazioni(numero_giocatori,E,N,nomefile);//inserisci le impostazioni
  45.                  break;
  46.        
  47.         case 3:break;//carica una vecchia partita
  48.         case 4: break;//mostra classifica
  49.         case 5://esci dal gioco
  50.         printf("\n\n\nMa esci di gia'?! :-( ...alla prossima volta!\n");
  51.         break;
  52.     }
  53.   } while(x!=5);
  54.  
  55.   system("pause");  
  56.   return 0;
  57. }
  58.  
  59. //funzione per il menų principale
  60. int menu() {
  61. int scelta=0;
  62.     printf("\n\n\t\t\t\t\aMENU PRINCIPALE:\n");
  63.     printf("\t\t\t1) Gioca \n");
  64.     printf("\t\t\t2) Impostazioni \n");
  65.     printf("\t\t\t3) Carica Partita\n");
  66.     printf("\t\t\t4) Classifica \n");
  67.     printf("\t\t\t5) Esci \n");
  68.     printf("\t\t\tScelta utente: ");
  69.     fflush(stdin);
  70.     scanf("%d", &scelta);
  71.      system ("cls");
  72.     if(scelta<1 || scelta>5) {
  73.      do {
  74.     printf("\n\t\t\t\tERRORE!! Opzione inesistente!\n");
  75.     printf("\n\n\t\t\t\t\aMENU PRINCIPALE:\n");
  76.     printf("\t\t\t1) Gioca \n");
  77.     printf("\t\t\t2) Impostazioni \n");
  78.     printf("\t\t\t3) Carica Partita\n");
  79.     printf("\t\t\t4) Classifica \n");
  80.     printf("\t\t\t5) Esci \n");
  81.     printf("\t\t\tScelta utente: ");
  82.     fflush(stdin);
  83.       scanf("%d", &scelta);
  84.      
  85.      } while(scelta<1 || scelta>5);
  86.     }
  87.  return scelta;
  88. }
  89.  
  90.  
  91. //IMPOSTAZIONI INIZIALI CHE ALLA FINE DELLA FUNZIONE NON DEVONO MODIFICARSI
  92. void impostazioni(int numero_giocatori,GIOCATORE E[N],int n,char nomefile[30])
  93. {// Scelta dei giocatori
  94.   int a,i;
  95.   printf("IMPOSTAZIONI STANDARD\n");
  96.   printf("1 - Numero giocatori        1\n");
  97.   printf("2 - Numero tentativi        8\n");
  98.   printf("3 - Categoria            Dizionario\n\n");
  99.   printf("\nGIOCATORI (Min 1):  ");
  100.   fflush(stdin);
  101.   scanf("%d",&numero_giocatori);
  102.   if(numero_giocatori<1)
  103.                     do{ printf("ERRORE: NUMERO DEI GIOCATORI ERRATO");
  104.                        printf("GIOCATORI (Min 1): ");
  105.                        fflush(stdin);
  106.                        scanf("\n%d",&numero_giocatori);
  107.                         } while(numero_giocatori<1);
  108.   //scelta dei tentativi
  109.   printf("\nTENTATIVI (Min 2): ");
  110.   fflush(stdin);
  111.   scanf("%d",&E[N].numero_tentativi);
  112.   if(E[N].numero_tentativi<2 )
  113.                    do{ printf("\nERRORE: NUMERO DEI TENTATIVI ERRATO");
  114.                        printf("\nTENTATIVI (Min 2): ");
  115.                        fflush(stdin);
  116.                        scanf("\n%d",&E[N].numero_tentativi);
  117.                         } while(E[N].numero_tentativi<2 );
  118.                        
  119.  //scelta categoria
  120.   printf("\nCATEGORIA: 1 - Dizionario ");
  121.   printf("\n           2 - Altre categorie\n");
  122.   printf("\n\t   Scelta utente: ");
  123.   fflush(stdin);
  124.   scanf("%d", &scelta);
  125.   if (scelta==1)
  126.   {nomefile="Dizionario";}
  127.   if (scelta==2)
  128.    { do
  129.      {
  130.       printf ("\n\t   - Animali\n");
  131.       printf ("\t   - Capitali\n");
  132.       printf ("\t   - Frutti\n");
  133.       printf ("\t   - Colori\n");
  134.       printf ("\t   - Nomi\n");
  135.       printf ("\t   - Mestieri\n");
  136.       printf ("\t   - Fiori\n");
  137.       printf ("\t   - Citta\n");
  138.       printf ("\t   - Stati\n");
  139.       printf ("\t   - Oggetti\n");
  140.       printf ("\t   - Cibo\n");
  141.       printf("\n\t   Scelta utente: ");
  142.       fflush(stdin);
  143.       scanf("%s", nomefile);
  144.       if((a=strcmp(nomefile,"Animali"))!=0)
  145.     {       if((a=strcmp(nomefile,"Capitali"))!=0)
  146.      {       if((a=strcmp(nomefile,"Frutti"))!=0)
  147.       {       if((a=strcmp(nomefile,"Colori"))!=0)
  148.        {       if((a=strcmp(nomefile,"Nomi"))!=0)
  149.         {       if((a=strcmp(nomefile,"Mestieri"))!=0)
  150.          {       if((a=strcmp(nomefile,"Fiori"))!=0)
  151.           {       if((a=strcmp(nomefile,"Citta"))!=0)
  152.            {       if((a=strcmp(nomefile,"Stati"))!=0)
  153.             {       if((a=strcmp(nomefile,"Oggetti"))!=0)
  154.              {       if((a=strcmp(nomefile,"Cibo"))!=0)
  155.              {
  156.                      system("cls");
  157.                      printf("ERRORE: Nome categoria errato");
  158.                      }}}}}}}}}}}
  159.                      }while(a!=0);                  
  160.        
  161.       system("cls");
  162.    
  163.    }else {printf("ERRORE nell'apertura del file"); }
  164.  
  165.    }
  166.  
  167.    
  168. void Stampa_Omino(GIOCATORE E[N],int n)
  169. {if(E[N].numero_tentativi>16)
  170.   {
  171.    printf("numero dei tentativi rimasti: ");
  172.    printf("%d", E[N].numero_tentativi);
  173.   }else{if (E[N].numero_tentativi<=16)
  174.         {switch(E[N].numero_tentativi){
  175.                                  case 1:printf(" ______\n");
  176.                                         printf(" |    |\n");
  177.                                         printf(" |    O\n");
  178.                                         printf(" |   /|%d \n",92);
  179.                                         printf(" |    |  \n");
  180.                                         printf(" |   / %d \n",92);
  181.                                         printf("_|_\n");
  182.                                        
  183.                                         printf("numero dei tentativi rimasti: ");
  184.                                         printf("%d\n", E[N].numero_tentativi);
  185.                                         printf("Mi dispiace...Hai Perso!");
  186.                                         break;
  187.                                  case 2:printf(" ______\n");
  188.                                         printf(" |    |\n");
  189.                                         printf(" |    O\n");
  190.                                         printf(" |   /|%d \n",92);
  191.                                         printf(" |    |\n");
  192.                                         printf(" |     %d \n",92);
  193.                                         printf("_|_\n");
  194.                                        
  195.                                         printf("numero dei tentativi rimasti: ");
  196.                                         printf("%d\n", E[N].numero_tentativi);
  197.                                         break;
  198.                                  case 3:printf(" ______\n");
  199.                                         printf(" |    |\n");
  200.                                         printf(" |    O\n");
  201.                                         printf(" |   /|%d \n",92);
  202.                                         printf(" |    |\n");
  203.                                         printf(" |\n");
  204.                                         printf("_|_\n");
  205.                                        
  206.                                         printf("numero dei tentativi rimasti: ");
  207.                                         printf("%d\n", E[N].numero_tentativi);
  208.                                         break;
  209.                                  case 4:printf(" ______\n");
  210.                                         printf(" |    |\n");
  211.                                         printf(" |    O\n");
  212.                                         printf(" |    |%d \n",92);
  213.                                         printf(" |    |\n");
  214.                                         printf(" |\n");
  215.                                         printf("_|_\n");
  216.                                      
  217.                                         printf("numero dei tentativi rimasti: ");
  218.                                         printf("%d\n", E[N].numero_tentativi);
  219.                                         break;
  220.                                  case 5:printf(" ______\n");
  221.                                         printf(" |    |\n");
  222.                                         printf(" |    O\n");
  223.                                         printf(" |    |\n");
  224.                                         printf(" |    |\n");
  225.                                         printf(" |\n");
  226.                                         printf("_|_\n");
  227.                                        
  228.                                         printf("numero dei tentativi rimasti: ");
  229.                                         printf("%d\n", E[N].numero_tentativi);
  230.                                         break;
  231.                                  case 6:
  232.                                         printf(" ______\n");
  233.                                         printf(" |    |\n");
  234.                                         printf(" |    O\n");
  235.                                         printf(" |    |\n");
  236.                                         printf(" |\n");
  237.                                         printf(" |\n");
  238.                                         printf("_|_\n");
  239.                                      
  240.                                         printf("numero dei tentativi rimasti: ");
  241.                                         printf("%d\n", E[N].numero_tentativi);
  242.                                         break;
  243.                                  case 7:
  244.                                         printf(" ______\n");
  245.                                         printf(" |    |\n");
  246.                                         printf(" |    O\n");
  247.                                         printf(" |\n");
  248.                                         printf(" |\n");
  249.                                         printf(" |\n");
  250.                                         printf("_|_\n");
  251.                                    
  252.                                         printf("numero dei tentativi rimasti: ");
  253.                                         printf("%d\n", E[N].numero_tentativi);
  254.                                         break;
  255.                                  case 8:printf(" ______\n");
  256.                                         printf(" |    |\n");
  257.                                         printf(" |\n");
  258.                                         printf(" |\n");
  259.                                         printf(" |\n");
  260.                                         printf(" |\n");
  261.                                         printf("_|_\n");
  262.                                    
  263.                                         printf("numero dei tentativi rimasti: ");
  264.                                         printf("%d\n", E[N].numero_tentativi);
  265.                                         break;
  266.                                  case 9:printf(" _____");
  267.                                         printf(" |\n");
  268.                                         printf(" |\n");
  269.                                         printf(" |\n");
  270.                                         printf(" |\n");
  271.                                         printf(" |\n");
  272.                                         printf("_|_\n");
  273.                                      
  274.                                         printf("numero dei tentativi rimasti: ");
  275.                                         printf("%d\n",  E[N].numero_tentativi);
  276.                                         break;
  277.                                  case 10:printf(" |\n");
  278.                                          printf(" |\n");
  279.                                          printf(" |\n");
  280.                                          printf(" |\n");
  281.                                          printf(" |\n");
  282.                                          printf("_|_\n");
  283.                                      
  284.                                          printf("numero dei tentativi rimasti: ");
  285.                                          printf("%d\n",  E[N].numero_tentativi);
  286.                                          break;
  287.                                  case 11:printf(" |\n");
  288.                                          printf(" |\n");
  289.                                          printf(" |\n");
  290.                                          printf(" |\n");
  291.                                          printf("_|_\n");
  292.                                        
  293.                                          printf("numero dei tentativi rimasti: ");
  294.                                          printf("%d\n",  E[N].numero_tentativi);
  295.                                          break;
  296.                                  case 12:printf(" |\n");
  297.                                          printf(" |\n");
  298.                                          printf(" |\n");
  299.                                          printf("_|_\n");
  300.                                      
  301.                                          printf("numero dei tentativi rimasti: ");
  302.                                          printf("%d\n",  E[N].numero_tentativi);
  303.                                          break;
  304.                                  case 13:printf(" |\n");
  305.                                          printf(" |\n");
  306.                                          printf("_|_\n");
  307.                                        
  308.                                          printf("numero dei tentativi rimasti: ");
  309.                                          printf("%d\n",  E[N].numero_tentativi);
  310.                                          break;
  311.                                  case 14:printf(" |\n");
  312.                                          printf("_|_\n");
  313.                                      
  314.                                          printf("numero dei tentativi rimasti: ");
  315.                                          printf("%d\n",  E[N].numero_tentativi);
  316.                                          break;
  317.                                  case 15:printf("_|_");
  318.                                      
  319.                                          printf("numero dei tentativi rimasti: ");
  320.                                          printf("%d\n", E[N].numero_tentativi);
  321.                                          break;
  322.                                  case 16:printf("__");
  323.                                        
  324.                                          printf("numero dei tentativi rimasti: ");
  325.                                          printf("%d\n",  E[N].numero_tentativi);
  326.                                          break;
  327.                                          }}
  328.                                  }
  329.                              }
  330.                              
  331. void gioco_standard(GIOCATORE E[N],int n)
  332. {int scelta_nome,i=0,record;
  333.  strcpy(E[N].nome_giocatore,"Giocatore");
  334.  printf("\n\n");
  335.   numero_giocatori=1;
  336.   E[N].numero_tentativi=8;
  337.   //strcpy(nomefile,"Dizionario");
  338.   char nomefile[30]="Dizionario";
  339.   //strcat(nomefile, ".txt");
  340.   printf("%s",nomefile);
  341.    if((fp=fopen("record.txt", "r"))==NULL) {
  342.    printf("\nIMPOSSIBILE accedere al file! Riprovare!\n");
  343.    } else
  344.    while(!feof(fp))
  345.    fscanf(fp,"\n%d", &record);
  346.    printf("\nRecord del gioco:  %d",record);
  347.    fclose(fp);  
  348.    printf("\n\nPunteggi attribuiti:\n");
  349.    printf("- Lettera indovinata: 10 punti\n");
  350.    printf("- Lettera o parola errata: passa il turno\n");
  351.    printf("- Parola indovinata: 40 punti\n");
  352.    printf("\nVuoi inserire il tuo nome?\n");
  353.    printf("1 - SI\n2 - NO\n");
  354.    scanf("%d",&scelta_nome);
  355.    if(scelta_nome==1){
  356.     printf("Inserisci il tuo nome: ");
  357.     fflush(stdin);
  358.     scanf("%s",&E[N].nome_giocatore);
  359.     system("cls");
  360.     printf("\t\t\t--->IL GIOCO HA INIZIO<---\n\n");
  361.     printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);
  362.     }else
  363.           {if(scelta_nome==2)
  364.            printf("\t\tIl tuo nome sara': ");
  365.            printf("%s\n\n",E[N].nome_giocatore);
  366.            system("cls");
  367.            printf("\t\t\t--->IL GIOCO HA INIZIO<---\n\n");
  368.            printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);}
  369.     Stampa_Omino(E,N);
  370.     Cerca_Parola(nomefile,fp);
  371.    
  372.      }
  373. //CERCA LA PAROLA NEL FILE E LA MODIFICA CON I TRATTINI
  374. void Cerca_Parola(char nomefile[30],FILE *fp)
  375. { char c;
  376.   int i=1,t,n,a;
  377.   int NUM_RIGHE=1;
  378.   strcat(nomefile, ".txt");
  379.   fp=fopen(nomefile,"r");
  380.   if(fp!=NULL)
  381.               {c=getc(fp);
  382.                            do
  383.                             {
  384.                                c=getc(fp);  
  385.        
  386.                                if(c=='\n')  
  387.                                {NUM_RIGHE++;
  388.                                              }
  389.                             }while(c!=EOF);
  390.               }else{printf("ERRORE nell'apertura del file");}
  391.  
  392.   fp=fopen(nomefile,"r");
  393.   if(fp!=NULL)
  394.               if(a=strcmp("Dizionario",nomefile)==0)
  395.                 {for(i=0;i<DIM_CAT;i++)
  396.                   {fscanf(fp,"%s",CATEGORIE[i]);
  397.                    n=DIM_CAT;}
  398.                 }else{
  399.                       n=30;
  400.                        for(i=0;i<n;i++)
  401.                        {fscanf(fp,"%s",CATEGORIE[i]);}}
  402.   srand(time(NULL));
  403.   i=rand()%n;
  404.   strcpy(parola, CATEGORIE[i]);
  405.   lung=strlen(parola);
  406.   for(i=0;i<lung;i++)
  407.     { parola_segreta[i]='_';
  408.      }
  409.  
  410.   printf("La parola segreta e': %s\n", parola_segreta);
  411.   a=Menu_Partita(E,N);
  412. }
  413.  
  414.  
  415. void Cerca_Lettera(GIOCATORE E[N],int n,char parola[30],char lettera, char Lettere[50])
  416. {int i,j,verifica;
  417. printf("%s\n\n",parola);
  418. for(j=0;j<50;j++)
  419.  {if(lettera!=Lettere[j])
  420.    {Lettere[j]=lettera;
  421.     verifica=1;
  422.    }else{
  423.          printf("Lettera gia' inserita");
  424.          }
  425.   }  
  426. if(verifica==1)      
  427.   {
  428.    lung=strlen(parola);
  429.     {for(i=0;i<lung;i++)
  430.        {
  431.         if(parola[i]==lettera)
  432.           {{ parola_segreta[i]=lettera;
  433.             }
  434.            E[N].punteggio=E[N].punteggio+10;
  435.            Stampa_Omino(E,N);
  436.           }}}
  437.          
  438.                 if(lettera!=parola[i])
  439.                 {
  440.                  E[N].numero_tentativi=E[N].numero_tentativi-1;
  441.               }
  442.                   Stampa_Omino(E,N);
  443.                
  444.                   }
  445.                
  446.                  
  447.                  
  448.         }
  449.  
  450.  
  451. int Menu_Partita(GIOCATORE E[N],int n)
  452. {int risp,ver,c;
  453.  printf("\n\n1-INSERISCI LA LETTERA\n2-INDOVINA PAROLA\n3-TORNA AL MENU' PRINCIPALE\n4-SALVA PARTITA\n");
  454.  printf("Scelta Utente: ");
  455.  fflush(stdin);
  456.  scanf("%d",&risp);
  457.  switch(risp){
  458.               case 1:{ printf("Inserisci la lettera: ");
  459.                       fflush(stdin);
  460.                       scanf("%c",&lettera);
  461.                       Cerca_Lettera(E,N,parola,lettera,Lettere);
  462.                    
  463.                       printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);
  464.                       //Stampa_Omino(E,N);ė
  465.                       printf("La parola segreta e': %s\n", parola_segreta);
  466.                       printf("Punteggio: %d\n\n",E[N].punteggio);
  467.                      
  468.                       c=Menu_Partita(E,N);}break;
  469.               case 2:break;
  470.               case 3:break;
  471.               case 4:break;
  472.               }
  473.     }


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:12
Sabato, 25/06/2011
non ho capito....spiegare che errore hai č troppo difficile?
Uno che vuole aiutare deve anche fare il test del programma per vedere dove ci sono bug?? Ma per favore...


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Segnala al moderatore
Postato alle 14:31
Sabato, 25/06/2011
Devi dirci l'output, le cose che vorresti che andassero cosė e vanno cosa'.
E' troppo generico come l'hai detto tu.

PM Quote