gabriele8
21-12-2007, 12:02
...m serve un aiuto..il mio programma oltre ad eseguire il gioco dovrebbe stampare l'elenco delle mosse dei giocatori e il tempo impiegato x ogni mossa...solo ke stampa numeri a casaccio e il tempo non funziona in modo corretto...sapreste aiutarmi???...grazie in anticipo...
"qst è il codice del programma"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int c,d;
int i=1;
int j,k;
int x;
int a,b;
int scelta[2];
int somma;
int totale[2];
int numeroPuntato[70];
int conta=1;
int n,m;
double z;
char gioca;
int giocate[70];
int v=0;
struct Utente{
char nome[20];
};
struct tempo{
double valore;
struct tempo *next;
};
struct mossa{
int mossa_memorizzata[100];
int tempo_mossa;
struct mossa *next;
};
struct mossa *T;
struct mossa *C;
struct mossa *nuovo_elemento;
struct mossa *temporaneo;
struct mossa *prec;
void inizializzaGiocatori(struct Utente *giocatori);
int NumeriDaGiocare(struct Utente*giocatori);
void memorizza_numero(int *numero,int temp);
int Puntata(struct Utente*giocatori);
int QuantoScommettere(struct Utente*giocatori);
void Estrazione();
void ControlloVincita(struct Utente*giocatori);
void elenco_mossa();
void Rigioca();
int main()
{
system("cls");
struct Utente giocatori[2];
printf("GIOCO DEL BIRIBI'\n\n");
inizializzaGiocatori(&giocatori[0]);
i++;
inizializzaGiocatori(&giocatori[1]);
NumeriDaGiocare(&giocatori[0]);
memorizza_numero(&c,d);
system("cls");
totale[i]=200;
//svuoto l'array
for(v=0;v<70;v++)
{
giocate[v]=-1;
}
for(j=1;j<=scelta[x];j++)
{
Puntata(&giocatori[0]);
memorizza_numero(&c,d);
QuantoScommettere(&giocatori[0]);
memorizza_numero(&c,d);
}
NumeriDaGiocare(&giocatori[1]);
memorizza_numero(&c,d);
system("cls");
totale[i]=200;
conta=1;
//svuoto l'array
for(v=0;v<70;v++)
{
giocate[v]=-1;
}
for(k=1;k<=scelta[x];k++)
{
Puntata(&giocatori[1]);
memorizza_numero(&c,d);
QuantoScommettere(&giocatori[1]);
memorizza_numero(&c,d);
}
Estrazione();
ControlloVincita(&giocatori[0]);
ControlloVincita(&giocatori[1]);
system("cls");
elenco_mossa();
Rigioca();
}
/*
fuonzione che inizializza i giocatori partecipanti al gioco
parametri in ingresso: puntatore a struttura utile per richiamare
gli elementi della struttura utente
*/
void inizializzaGiocatori(struct Utente *giocatori)
{
printf("Inserire il nome del giocatore %d : ",i);
scanf("%s",giocatori->nome);
fflush(stdin);
printf("\n");
}
int NumeriDaGiocare(struct Utente*giocatori)
{
time_t inizio, fine;
double temp;
system("cls");
inizio = time(NULL);
printf("%s quanti numeri vuoi giocare? [0 per uscire]: ",giocatori->nome);
scanf("%d",&scelta[x]);
fine = time(NULL);
temp = difftime(fine,inizio);
fflush(stdin);
if (scelta[x]==0)
{
exit(0);
}
else if (scelta[x]>71)
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
return (NumeriDaGiocare(&giocatori[0]));
}
}
int Puntata(struct Utente*giocatori)
{
printf("%s scegli il tuo %d^ numero [da 0 a 70]: ",giocatori->nome,conta);
scanf("%d",&numeroPuntato[a]);
conta++;
if (numeroPuntato[a]>70 || numeroPuntato[a]<0)
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (Puntata(&giocatori[0]));
}
else
{
for(v=0;v<70;v++)
{
if(numeroPuntato[a]==giocate[v])
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (Puntata(&giocatori[0]));
}
}
}
giocate[conta-2]=numeroPuntato[a];
system("cls");
}
int QuantoScommettere(struct Utente*giocatori)
{
printf("\nQuanto vuoi scommettere sul numero %d ? [N.B. hai a disposizione %d euro]: ",numeroPuntato[a],totale[i]);
scanf("%d",&somma);
if ((somma<=totale[i])&&(somma!=0))
{
totale[i]=totale[i]-somma;
printf("\nHai ancora a disposizione %d euro\n\n\n",totale[i]);
system("pause");
system("cls");
}
else
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (QuantoScommettere(&giocatori[0]),conta++);
}
}
/*
Estrazione
funzione che permette l'estrazione random di un file
non ha valori in ingresso
*/
void Estrazione()
{
srand(time(0));
n=rand();
z=((double)n)/RAND_MAX;
m=n%70;
}
void ControlloVincita(struct Utente*giocatori)
{
printf("\n\n Il numero estratto e' : %d \n\n",m);
if (m==numeroPuntato[a])
{
printf("%s: HAI VINTO!!\n\n ",giocatori->nome);
(totale[i]=totale[i]+(somma*64));
printf(" Complimenti!!! ora il tuo saldo corrisponde a : %d euro\n\n",totale[i]);
}
else
{
printf("%s: HAI PERSO!!\n\n",giocatori->nome);
}
system("pause");
}
void Rigioca()
{
printf("\n\n\n Volete iniziare un\'altra partita\n [premere s per continuare, un altro tasto per terminare il gioco]: ");
fflush(stdin);
scanf("%c",&gioca);
if ((gioca=='s'||gioca=='S'))
{
main(i--);
}
else
{
exit(0);
}
}
void memorizza_numero(int *numero,int temp)
{
int q;
nuovo_elemento = (struct mossa*)malloc(sizeof(struct mossa));
nuovo_elemento->next=NULL;
if (nuovo_elemento == NULL)
{
printf("\n\n Errore nell'allocazione della memoria.\n Il programma verra' terminato!\n ");
system("pause");
exit(0);
}
for(q=0;q<100;q++)
{
nuovo_elemento->mossa_memorizzata[q]='\0';
if(numero[q]=='\n')
break;
nuovo_elemento->mossa_memorizzata[q]=numero[q];
}
if(T==NULL)
T=nuovo_elemento;
else
C->next=nuovo_elemento;
C=nuovo_elemento;
nuovo_elemento->tempo_mossa=temp;
}
/* elenco_mossa
*funzione che stampa tutte le mosse eseguite
*
*Non ha valori in ingresso
*
*Vengono stampate a video tutti i numeri inserite col tempo
*impiegato per inserire ognuno di essi
*/
void elenco_mossa()
{
temporaneo = T;
printf("\n\n\n\n ELENCO MOSSE:\n");
while(temporaneo != NULL)
{
printf("Il numero inserito e' %d, ed il tempo impiegato e' %d s.\n",temporaneo->mossa_memorizzata,temporaneo->tempo_mossa);
temporaneo = temporaneo->next;
}
}
"qst è il codice del programma"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int c,d;
int i=1;
int j,k;
int x;
int a,b;
int scelta[2];
int somma;
int totale[2];
int numeroPuntato[70];
int conta=1;
int n,m;
double z;
char gioca;
int giocate[70];
int v=0;
struct Utente{
char nome[20];
};
struct tempo{
double valore;
struct tempo *next;
};
struct mossa{
int mossa_memorizzata[100];
int tempo_mossa;
struct mossa *next;
};
struct mossa *T;
struct mossa *C;
struct mossa *nuovo_elemento;
struct mossa *temporaneo;
struct mossa *prec;
void inizializzaGiocatori(struct Utente *giocatori);
int NumeriDaGiocare(struct Utente*giocatori);
void memorizza_numero(int *numero,int temp);
int Puntata(struct Utente*giocatori);
int QuantoScommettere(struct Utente*giocatori);
void Estrazione();
void ControlloVincita(struct Utente*giocatori);
void elenco_mossa();
void Rigioca();
int main()
{
system("cls");
struct Utente giocatori[2];
printf("GIOCO DEL BIRIBI'\n\n");
inizializzaGiocatori(&giocatori[0]);
i++;
inizializzaGiocatori(&giocatori[1]);
NumeriDaGiocare(&giocatori[0]);
memorizza_numero(&c,d);
system("cls");
totale[i]=200;
//svuoto l'array
for(v=0;v<70;v++)
{
giocate[v]=-1;
}
for(j=1;j<=scelta[x];j++)
{
Puntata(&giocatori[0]);
memorizza_numero(&c,d);
QuantoScommettere(&giocatori[0]);
memorizza_numero(&c,d);
}
NumeriDaGiocare(&giocatori[1]);
memorizza_numero(&c,d);
system("cls");
totale[i]=200;
conta=1;
//svuoto l'array
for(v=0;v<70;v++)
{
giocate[v]=-1;
}
for(k=1;k<=scelta[x];k++)
{
Puntata(&giocatori[1]);
memorizza_numero(&c,d);
QuantoScommettere(&giocatori[1]);
memorizza_numero(&c,d);
}
Estrazione();
ControlloVincita(&giocatori[0]);
ControlloVincita(&giocatori[1]);
system("cls");
elenco_mossa();
Rigioca();
}
/*
fuonzione che inizializza i giocatori partecipanti al gioco
parametri in ingresso: puntatore a struttura utile per richiamare
gli elementi della struttura utente
*/
void inizializzaGiocatori(struct Utente *giocatori)
{
printf("Inserire il nome del giocatore %d : ",i);
scanf("%s",giocatori->nome);
fflush(stdin);
printf("\n");
}
int NumeriDaGiocare(struct Utente*giocatori)
{
time_t inizio, fine;
double temp;
system("cls");
inizio = time(NULL);
printf("%s quanti numeri vuoi giocare? [0 per uscire]: ",giocatori->nome);
scanf("%d",&scelta[x]);
fine = time(NULL);
temp = difftime(fine,inizio);
fflush(stdin);
if (scelta[x]==0)
{
exit(0);
}
else if (scelta[x]>71)
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
return (NumeriDaGiocare(&giocatori[0]));
}
}
int Puntata(struct Utente*giocatori)
{
printf("%s scegli il tuo %d^ numero [da 0 a 70]: ",giocatori->nome,conta);
scanf("%d",&numeroPuntato[a]);
conta++;
if (numeroPuntato[a]>70 || numeroPuntato[a]<0)
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (Puntata(&giocatori[0]));
}
else
{
for(v=0;v<70;v++)
{
if(numeroPuntato[a]==giocate[v])
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (Puntata(&giocatori[0]));
}
}
}
giocate[conta-2]=numeroPuntato[a];
system("cls");
}
int QuantoScommettere(struct Utente*giocatori)
{
printf("\nQuanto vuoi scommettere sul numero %d ? [N.B. hai a disposizione %d euro]: ",numeroPuntato[a],totale[i]);
scanf("%d",&somma);
if ((somma<=totale[i])&&(somma!=0))
{
totale[i]=totale[i]-somma;
printf("\nHai ancora a disposizione %d euro\n\n\n",totale[i]);
system("pause");
system("cls");
}
else
{
printf("\nVALORE INSERITO SCORRETTO\n\n");
system("pause");
system("cls");
conta--;
return (QuantoScommettere(&giocatori[0]),conta++);
}
}
/*
Estrazione
funzione che permette l'estrazione random di un file
non ha valori in ingresso
*/
void Estrazione()
{
srand(time(0));
n=rand();
z=((double)n)/RAND_MAX;
m=n%70;
}
void ControlloVincita(struct Utente*giocatori)
{
printf("\n\n Il numero estratto e' : %d \n\n",m);
if (m==numeroPuntato[a])
{
printf("%s: HAI VINTO!!\n\n ",giocatori->nome);
(totale[i]=totale[i]+(somma*64));
printf(" Complimenti!!! ora il tuo saldo corrisponde a : %d euro\n\n",totale[i]);
}
else
{
printf("%s: HAI PERSO!!\n\n",giocatori->nome);
}
system("pause");
}
void Rigioca()
{
printf("\n\n\n Volete iniziare un\'altra partita\n [premere s per continuare, un altro tasto per terminare il gioco]: ");
fflush(stdin);
scanf("%c",&gioca);
if ((gioca=='s'||gioca=='S'))
{
main(i--);
}
else
{
exit(0);
}
}
void memorizza_numero(int *numero,int temp)
{
int q;
nuovo_elemento = (struct mossa*)malloc(sizeof(struct mossa));
nuovo_elemento->next=NULL;
if (nuovo_elemento == NULL)
{
printf("\n\n Errore nell'allocazione della memoria.\n Il programma verra' terminato!\n ");
system("pause");
exit(0);
}
for(q=0;q<100;q++)
{
nuovo_elemento->mossa_memorizzata[q]='\0';
if(numero[q]=='\n')
break;
nuovo_elemento->mossa_memorizzata[q]=numero[q];
}
if(T==NULL)
T=nuovo_elemento;
else
C->next=nuovo_elemento;
C=nuovo_elemento;
nuovo_elemento->tempo_mossa=temp;
}
/* elenco_mossa
*funzione che stampa tutte le mosse eseguite
*
*Non ha valori in ingresso
*
*Vengono stampate a video tutti i numeri inserite col tempo
*impiegato per inserire ognuno di essi
*/
void elenco_mossa()
{
temporaneo = T;
printf("\n\n\n\n ELENCO MOSSE:\n");
while(temporaneo != NULL)
{
printf("Il numero inserito e' %d, ed il tempo impiegato e' %d s.\n",temporaneo->mossa_memorizzata,temporaneo->tempo_mossa);
temporaneo = temporaneo->next;
}
}