#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;
}
}