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

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