Oppure

Loading
24/06/11 14:53
disperata
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

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define N 10
#define DIM_CAT 110 //dimensione vettore per le categorie

typedef char stringa[30];
typedef struct { char nome_giocatore[20];
                 int numero_tentativi;
                 int punteggio;}GIOCATORE;
                 
int numero_giocatori, scelta,lung,n;

GIOCATORE E[N];

stringa CATEGORIE[DIM_CAT];

char Lettere[50];

FILE *fp; 

char lettera;
char nomefile[30];
char parola[30];
char parola_segreta[100];

void gioco_standard(GIOCATORE E[N],int n);
void Cerca_Parola(char nomefile[30],FILE *fp);
void impostazioni(int numero_giocatori,GIOCATORE E[N],int n,char nomefile[30]);
void Stampa_Omino(GIOCATORE E[N],int n);
void Stampa_Parola(char parola[30], GIOCATORE E[N], int n,char nome[10]);
int Menu_Partita(GIOCATORE E[N],int n);
//void Schermata(GIOCATORE E[N],int n,char parola_segreta[100]);
void Cerca_Lettera(GIOCATORE E[N],int n,char parola[30],char lettera,char Lettere[50]);

int main() {
int x;
  do {   
    x=menu();
    switch(x) {
        case 1: {gioco_standard(E,N); 
                break;} 
        case 2: impostazioni(numero_giocatori,E,N,nomefile);//inserisci le impostazioni
                 break;
        
        case 3:break;//carica una vecchia partita
        case 4: break;//mostra classifica
        case 5://esci dal gioco
        printf("\n\n\nMa esci di gia'?! :-( ...alla prossima volta!\n"); 
        break;
    }
  } while(x!=5);
  
  system("pause");  
  return 0;
}

//funzione per il menù principale
int menu() {
int scelta=0;
    printf("\n\n\t\t\t\t\aMENU PRINCIPALE:\n");
    printf("\t\t\t1) Gioca \n");
    printf("\t\t\t2) Impostazioni \n");
    printf("\t\t\t3) Carica Partita\n");
    printf("\t\t\t4) Classifica \n");
    printf("\t\t\t5) Esci \n");
    printf("\t\t\tScelta utente: ");
    fflush(stdin);
    scanf("%d", &scelta);
     system ("cls");
    if(scelta<1 || scelta>5) {
     do {
    printf("\n\t\t\t\tERRORE!! Opzione inesistente!\n");
    printf("\n\n\t\t\t\t\aMENU PRINCIPALE:\n");
    printf("\t\t\t1) Gioca \n");
    printf("\t\t\t2) Impostazioni \n");
    printf("\t\t\t3) Carica Partita\n");
    printf("\t\t\t4) Classifica \n");
    printf("\t\t\t5) Esci \n");
    printf("\t\t\tScelta utente: ");
    fflush(stdin);
      scanf("%d", &scelta);
     
     } while(scelta<1 || scelta>5);
    }
 return scelta;
}


//IMPOSTAZIONI INIZIALI CHE ALLA FINE DELLA FUNZIONE NON DEVONO MODIFICARSI
void impostazioni(int numero_giocatori,GIOCATORE E[N],int n,char nomefile[30])
{// Scelta dei giocatori
  int a,i;
  printf("IMPOSTAZIONI STANDARD\n");
  printf("1 - Numero giocatori        1\n");
  printf("2 - Numero tentativi        8\n");
  printf("3 - Categoria            Dizionario\n\n");
  printf("\nGIOCATORI (Min 1):  ");
  fflush(stdin);
  scanf("%d",&numero_giocatori);
  if(numero_giocatori<1)
                    do{ printf("ERRORE: NUMERO DEI GIOCATORI ERRATO");
                       printf("GIOCATORI (Min 1): ");
                       fflush(stdin);
                       scanf("\n%d",&numero_giocatori);
                        } while(numero_giocatori<1);
  //scelta dei tentativi
  printf("\nTENTATIVI (Min 2): ");
  fflush(stdin);
  scanf("%d",&E[N].numero_tentativi);
  if(E[N].numero_tentativi<2 )
                   do{ printf("\nERRORE: NUMERO DEI TENTATIVI ERRATO");
                       printf("\nTENTATIVI (Min 2): ");
                       fflush(stdin);
                       scanf("\n%d",&E[N].numero_tentativi);
                        } while(E[N].numero_tentativi<2 );
                        
 //scelta categoria
  printf("\nCATEGORIA: 1 - Dizionario ");
  printf("\n           2 - Altre categorie\n");
  printf("\n\t   Scelta utente: ");
  fflush(stdin);
  scanf("%d", &scelta);
  if (scelta==1)
  {nomefile="Dizionario";}
  if (scelta==2)
   { do
     {
      printf ("\n\t   - Animali\n");
      printf ("\t   - Capitali\n");
      printf ("\t   - Frutti\n");
      printf ("\t   - Colori\n");
      printf ("\t   - Nomi\n");
      printf ("\t   - Mestieri\n");
      printf ("\t   - Fiori\n");
      printf ("\t   - Citta\n");
      printf ("\t   - Stati\n");
      printf ("\t   - Oggetti\n");
      printf ("\t   - Cibo\n");
      printf("\n\t   Scelta utente: ");
      fflush(stdin);
      scanf("%s", nomefile);
      if((a=strcmp(nomefile,"Animali"))!=0)
    {       if((a=strcmp(nomefile,"Capitali"))!=0)
     {       if((a=strcmp(nomefile,"Frutti"))!=0)
      {       if((a=strcmp(nomefile,"Colori"))!=0)
       {       if((a=strcmp(nomefile,"Nomi"))!=0)
        {       if((a=strcmp(nomefile,"Mestieri"))!=0)
         {       if((a=strcmp(nomefile,"Fiori"))!=0)
          {       if((a=strcmp(nomefile,"Citta"))!=0)
           {       if((a=strcmp(nomefile,"Stati"))!=0)
            {       if((a=strcmp(nomefile,"Oggetti"))!=0)
             {       if((a=strcmp(nomefile,"Cibo"))!=0)
             {
                     system("cls");
                     printf("ERRORE: Nome categoria errato");
                     }}}}}}}}}}}
                     }while(a!=0);                  
        
      system("cls");
   
   }else {printf("ERRORE nell'apertura del file"); }

   }
 
   
void Stampa_Omino(GIOCATORE E[N],int n)
{if(E[N].numero_tentativi>16)
  {
   printf("numero dei tentativi rimasti: ");
   printf("%d", E[N].numero_tentativi);
  }else{if (E[N].numero_tentativi<=16)
        {switch(E[N].numero_tentativi){
                                 case 1:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |   /|%d \n",92);
                                        printf(" |    |  \n");
                                        printf(" |   / %d \n",92);
                                        printf("_|_\n");
                                        
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        printf("Mi dispiace...Hai Perso!");
                                        break;
                                 case 2:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |   /|%d \n",92);
                                        printf(" |    |\n");
                                        printf(" |     %d \n",92);
                                        printf("_|_\n");
                                       
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 3:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |   /|%d \n",92);
                                        printf(" |    |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                        
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 4:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |    |%d \n",92);
                                        printf(" |    |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                      
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 5:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |    |\n");
                                        printf(" |    |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                       
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 6:
                                        printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |    |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                     
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 7:
                                        printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |    O\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                   
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 8:printf(" ______\n");
                                        printf(" |    |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                   
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n", E[N].numero_tentativi);
                                        break;
                                 case 9:printf(" _____");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf(" |\n");
                                        printf("_|_\n");
                                      
                                        printf("numero dei tentativi rimasti: ");
                                        printf("%d\n",  E[N].numero_tentativi);
                                        break;
                                 case 10:printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf("_|_\n");
                                      
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                 case 11:printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf("_|_\n");
                                        
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                 case 12:printf(" |\n");
                                         printf(" |\n");
                                         printf(" |\n");
                                         printf("_|_\n");
                                     
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                 case 13:printf(" |\n");
                                         printf(" |\n");
                                         printf("_|_\n");
                                       
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                 case 14:printf(" |\n");
                                         printf("_|_\n");
                                     
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                 case 15:printf("_|_");
                                      
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n", E[N].numero_tentativi);
                                         break;
                                 case 16:printf("__");
                                        
                                         printf("numero dei tentativi rimasti: ");
                                         printf("%d\n",  E[N].numero_tentativi);
                                         break;
                                         }}
                                 }
                             }
                             
void gioco_standard(GIOCATORE E[N],int n)
{int scelta_nome,i=0,record;
 strcpy(E[N].nome_giocatore,"Giocatore");
 printf("\n\n");
  numero_giocatori=1;
  E[N].numero_tentativi=8;
  //strcpy(nomefile,"Dizionario");
  char nomefile[30]="Dizionario";
  //strcat(nomefile, ".txt");
  printf("%s",nomefile);
   if((fp=fopen("record.txt", "r"))==NULL) {
   printf("\nIMPOSSIBILE accedere al file! Riprovare!\n");
   } else
   while(!feof(fp))
   fscanf(fp,"\n%d", &record);
   printf("\nRecord del gioco:  %d",record);
   fclose(fp);   
   printf("\n\nPunteggi attribuiti:\n");
   printf("- Lettera indovinata: 10 punti\n");
   printf("- Lettera o parola errata: passa il turno\n");
   printf("- Parola indovinata: 40 punti\n");
   printf("\nVuoi inserire il tuo nome?\n");
   printf("1 - SI\n2 - NO\n");
   scanf("%d",&scelta_nome);
   if(scelta_nome==1){
    printf("Inserisci il tuo nome: ");
    fflush(stdin);
    scanf("%s",&E[N].nome_giocatore); 
    system("cls");
    printf("\t\t\t--->IL GIOCO HA INIZIO<---\n\n");
    printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);
    }else
          {if(scelta_nome==2)
           printf("\t\tIl tuo nome sara': ");
           printf("%s\n\n",E[N].nome_giocatore);
           system("cls");
           printf("\t\t\t--->IL GIOCO HA INIZIO<---\n\n");
           printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);}
    Stampa_Omino(E,N);
    Cerca_Parola(nomefile,fp);
    
     }
//CERCA LA PAROLA NEL FILE E LA MODIFICA CON I TRATTINI 
void Cerca_Parola(char nomefile[30],FILE *fp)
{ char c;
  int i=1,t,n,a;
  int NUM_RIGHE=1;
  strcat(nomefile, ".txt");
  fp=fopen(nomefile,"r");
  if(fp!=NULL)
              {c=getc(fp); 
                           do
                            { 
                               c=getc(fp);  
        
                               if(c=='\n')  
                               {NUM_RIGHE++;
                                             }
                            }while(c!=EOF); 
              }else{printf("ERRORE nell'apertura del file");}

  fp=fopen(nomefile,"r");
  if(fp!=NULL)
              if(a=strcmp("Dizionario",nomefile)==0)
                {for(i=0;i<DIM_CAT;i++)
                  {fscanf(fp,"%s",CATEGORIE[i]);
                   n=DIM_CAT;}
                }else{
                      n=30;
                       for(i=0;i<n;i++)
                       {fscanf(fp,"%s",CATEGORIE[i]);}}
  srand(time(NULL));
  i=rand()%n;
  strcpy(parola, CATEGORIE[i]);
  lung=strlen(parola);
  for(i=0;i<lung;i++)
    { parola_segreta[i]='_';
     }
 
  printf("La parola segreta e': %s\n", parola_segreta);
  a=Menu_Partita(E,N);
}


void Cerca_Lettera(GIOCATORE E[N],int n,char parola[30],char lettera, char Lettere[50]) 
{int i,j,verifica;
printf("%s\n\n",parola);
for(j=0;j<50;j++)
 {if(lettera!=Lettere[j])
   {Lettere[j]=lettera;
    verifica=1;
   }else{
         printf("Lettera gia' inserita");
         }
  }   
if(verifica==1)      
  {
   lung=strlen(parola);
    {for(i=0;i<lung;i++)
       {
        if(parola[i]==lettera)
          {{ parola_segreta[i]=lettera;
            }
           E[N].punteggio=E[N].punteggio+10;
           Stampa_Omino(E,N);
          }}}
          
                if(lettera!=parola[i])
                {
                 E[N].numero_tentativi=E[N].numero_tentativi-1;
              }
                  Stampa_Omino(E,N);
               
                  }
                
                  
                  
        }


int Menu_Partita(GIOCATORE E[N],int n)
{int risp,ver,c;
 printf("\n\n1-INSERISCI LA LETTERA\n2-INDOVINA PAROLA\n3-TORNA AL MENU' PRINCIPALE\n4-SALVA PARTITA\n");
 printf("Scelta Utente: "); 
 fflush(stdin);
 scanf("%d",&risp);
 switch(risp){
              case 1:{ printf("Inserisci la lettera: ");
                      fflush(stdin);
                      scanf("%c",&lettera);
                      Cerca_Lettera(E,N,parola,lettera,Lettere);
                    
                      printf("\t\tNome giocatore: %s\n",E[N].nome_giocatore);
                      //Stampa_Omino(E,N);ì
                      printf("La parola segreta e': %s\n", parola_segreta);
                      printf("Punteggio: %d\n\n",E[N].punteggio);
                      
                      c=Menu_Partita(E,N);}break;
              case 2:break;
              case 3:break;
              case 4:break;
              }
    }
aaa
25/06/11 7:12
lorenzo
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...
aaa
25/06/11 12:31
comina8
Devi dirci l'output, le cose che vorresti che andassero così e vanno cosa'.
E' troppo generico come l'hai detto tu.
aaa