Buongiorno a tutti,
Sono nuovo e avrei un problema con un "mini gioco".Il gioco consiste nel pescare le carte da briscola, dopo di che ogni carta ha un valore:asso=10, fante=2, cavallo=3, re=4.
Il programma è funzionante inizialmente, ma stranamente dopo un po di volte che si pesca la carta il programma si blocca(credo in un ciclo infinito).
Attendo risposta chiunque sia disponibile ad aiutarmi. in basso metto a disposizione il codice.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#include <time.h>
int main(){
//inizializzazione di due vettri(numero della carta e seme);
char s[][9]={"ori","spade","bastoni","coppe"},
c[][9]={"asso","due","tre","quattro","cinque","sei","sette","fante","cavallo","re"};
int c_p[40];
int i,n_c,n_s,j;
int g1=0,g2=0,err=0;
srand(time(NULL));
for(i=0;i<40;i++){
//scelta carta giocatore 1
do{
err=0;
n_c=rand()%10;
n_s=rand()%4;
//controllo le carte che non siano già state pescate
for(j=0;j<40;j++){
if(n_c+n_s == c_p[j]){
err=1;
break;
}
}
}while(err==1);
c_p[i]=n_s+n_c;
printf("Hai pescato: %s di %s\n",c[n_c],s[n_s]);
switch(n_c){
case 0:
g1+=10;
break;
case 7:
g1+=2;
break;
case 8:
g1+=3;
break;
case 9:
g1+=4;
break;
}
//scelata carta giocatore 2
do{
err=0;
n_c=rand()%10;
n_s=rand()%4;
//controllo le carte che non siano già state pescate
for(j=0;j<40;j++){
if(n_c+n_s == c_p[j]){
err=1;
break;
}
}
}while(err==1);
i++;
c_p[i]=n_s+n_c;
printf("Ha pescato: %s di %s\n",c[n_c],s[n_s]);
switch(n_c){
case 0:
g2+=10;
break;
case 7:
g2+=2;
break;
case 8:
g2+=3;
break;
case 9:
g2+=4;
break;
}
getch();
system("cls");
printf("Punteggio:G1\tG2\n");
printf(" %d\t%d\n\n",g1,g2);
printf("Premere un tasto per pescare la prossima carta:");
getch();
system("cls");
}
system("pause");
}
Grazie