Ho provato a scriverlo sia con i vettori che con le liste però con i vettori è sbagliato.
Ed è tutto confuso ed incasinato come lo puoi notare. Prima ho voluto realizzare le varie funzioni per facilitarmi però così non faccio nulla.
char carta[10][8] = {"Asso ","Due ","Tre ","Quattro","Cinque ","Sei ","Sette ",
"Fante ","Regina ","Re "};
char seme[4][8] = {"Cuori ","Quadri","Picche","Fiori "};
char colore [2][6] = {"Rosso","Blu "};
int mazzo[10][4][2]; // mazzo di carte: 10 righe (carte), 4 colonne (semi) e 2 mazzi
int c,s,m,g; // indici degli array ('c'=carta, 's'=seme, 'm'=colore)
int giocatore[10][4][2][3]; // giocatori: 10 carte, 4 semi, 2 mazzi e 4 giocatori
/*la funzione che mi permette di stampare il menu*/
void stampa_menu(const char *sPtr){
for( ; *sPtr != '\0'; sPtr++){ /*non serve inizializzarlo e procede finche non trova il carattere '\0'*/
printf("%c", *sPtr);
_sleep(5); //mi permette di stampare un carattere alla volta
}
}
/*----------------------------------------------------------------------------*/
/*File su cui salvare i dati di gioco*/
void file_salva(){
int giocatore[3]={1,2,3};
int somma[];
FILE *f_salvataggio;
f_salvataggio = fopen ("salva_dei_dati_di_gioco", "w+");
for(int i=0; i<N; i++){
fprintf(f_salvataggio,"-----Giocatore [%d]\n----Denaro [%d]\n-----\n",giocatore, somma);
}
fclose(f_salvataggio);
}
/*File da cui leggere i dati del gioco*/
void file_caricamento(){
int somma[];
FILE *f_salvataggio;
f_salvataggio = fopen ("salvataggio_dei_dati_di_gioco", "r");
for(int i=0; i<N; i++){
fscanf(f_salvataggio,"-----Giocatore [%d]\n----Denaro [%d]\n-----\n",giocatore, somma);
}
fclose(f_salvataggio);
}
/*----------------------------------------------------------------------------*/
/*Mazzo delle carte con la liste*/
/*
void mazzo(){
typedef enum { Cuori, Quadri, Picche, Fiori} Semi_black;
typedef enum { Asso, Due, Tre, Quattro, Cinque, Sei, Sette, Otto, Nove, Dieci, Fante, Regina, Re} Figura;
typedef enum { Rosso, Blu} Colore;
struct carta {
int valore;
Figura figura;
Semi_black seme;
// Colore colore;
};
typedef struct carta Carta;
Carta mazzo[52]= { //Arrey del mazzo di gioco
{1,Asso,Cuori},{2,Due,Cuori},{3,Tre,Cuori},{4,Quattro,Cuori},{5,Cinque,Cuori},{6,Sei,Cuori},{7,Sette,Cuori},
{8,Otto,Cuori},{9,Nove,Cuori},{10,Dieci,Cuori},{10,Fante,Cuori},{10,Regina,Cuori},{10,Re,Cuori},
{1,Asso,Quadri},{2,Due,Quadri},{3,Tre,Quadri},{4,Quattro,Quadri},{5,Cinque,Quadri},{6,Sei,Quadri},{7,Sette,Quadri},
{8,Otto,Quadri},{9,Nove,Quadri},{10,Dieci,Quadri},{10,Fante,Quadri},{10,Regina,Quadri},{10,Re,Quadri},
{1,Asso,Picche},{2,Due,Picche},{3,Tre,Picche},{4,Quattro,Picche},{5,Cinque,Picche},{6,Sei,Picche},{7,Sette,Picche},
{8,Otto,Picche},{9,Nove,Picche},{10,Dieci,Picche},{10,Fante,Picche},{10,Regina,Picche},{10,Re,Picche},
{1,Asso,Fiori},{2,Due,Fiori},{3,Tre,Fiori},{4,Quattro,Fiori},{5,Cinque,Fiori},{6,Sei,Fiori},{7,Sette,Fiori},
{8,Otto,Fiori},{9,Nove,Fiori},{10,Dieci,Fiori},{10,Fante,Fiori},{10,Regina,Fiori},{10,Re,Fiori},
};
}
*/
/*----------------------------------------------------------------------------*/
/*Lista dei giocatori*/
typedef struct giocatore{
char nome_giocatore;
int patrimonio;
int giocatore *ptr;
}Giocatore;
/*----------------------------------------------------------------------------*/
/*I vari punteggi*/
int punteggi(){
//se il giocatore fa 21 con due carte
/* non so come fare per far si che due carte mi possano fare questo!!!
if( somma==21){
printf("Perfetto per questo ottiene un premio\n");
puntata = puntata * 1,5;
cassa_giocatore = cassa_giocatore + puntata;
}
*/
//[2] è il giocatore [1] è la casino'
if((somma[1]>somma[2] && somma[2]<=21) ||(somma[2]<=21 && somma[1]>21)){
printf("Hai vinto\n");
cassa_giocatore = cassa_giocatore + puntata;
cassa_casino = cassa_casino - puntata;
if(cassa_casino == 0){
printf("Hai battuto il casino'\n");
goto exit;
}
}
if((somma[2]<somma[1] && somma[1]<=21)||(somma[1]<=21 && somma[2]>21)){
printf("Hai perso\n");
cassa_giocatore = cassa_giocatore - puntata;
cassa_casino = cassa_casino + puntata;
if(cassa_giocatore ==0){
printf("Il casino' ti ha battuto\n");
goto exit;
}
}
if(somma[2]==somma[1] || (somma[2]>=21 && somma[1]>=21)){
printf("Pareggio nessuno vince nulla.\n");
cassa_giocatore = cassa_giocatore;
cassa_casino = cassa_casino;
}
}
/*----------------------------------------------------------------------------*/
/*Nucleo del gioco*/
/**/
void inizializza() { // inizializzazione strutture
for( c = 0; c < 10; c++ ) { // ciclo sulle carte
for( s = 0; s < 4; s++ ) { // ciclo sui semi
for(m = 0; m < 2; m++) { // ciclo sul colore mazzo
mazzo[c][s][m] = 1; // 1 - carta presente
for( g = 0; g < N_giocatori; g++ ) // ciclo sui giocatori
giocatore[c][s][m][g] = 0; } // 0 - carta assente
}
}
}
void distribuisci() { // distribuzione casuale carte
srand(time(0)); // setta il numero iniziale del generatore numeri casuali
for(g=0;g<N_giocatori; g++){ // per ognuno dei quattro giocatori
for ( int i = 0; i < 10; i++ ){ // vengono distribuite dieci carte
do {
c = rand() % 10; // numero casuale da 0 a 9 - carta
s = rand() % 4; // numero casuale da 0 a 3 - seme
m = rand() % 2; // numero casuale da 0 a 1 - colore mazzo
}
while (mazzo[c][s][m] == 0); // se carta non disponibile, ritenta
mazzo[c][s][m] = 0; // la toglie dal mazzo
giocatore[c][s][m][g] = 1; // la assegna al giocatore corrente
}
}
}
void visualizza() { //
int row;
for( g = 0; g < N_giocatori; g++ ) { // ciclo sui giocatori
row = 2;
printf("Giocatore %d\n", g+1);
for ( c = 0; c < 10 ; c++) { // ciclo sulle carte
for ( s = 0; s < 4; s++) { // ciclo sui semi
for( m = 0; m < 2; m++){
if (giocatore[c][s][m][g] == 1) {
row = row + 1;
printf("%2d%10s%10s%10s\n",row-2, carta[c],seme[s], colore[m]);}
}
}
}
}
}---------------------------------------------------------------------*/