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