codice:
#include <stdio.h>#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <stdbool.h>
#define dim 40
#define pnt 200
const char *seme[4]={"Bastoni","Denari","Spade","Coppe"};
const char *val[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci"};
void mescola(int [][10]);
void visualizza(const char *[],const char*[]);
void creamazzo(int [][10],char *wmazzo[],const char *seme[],const char *val[]);
void visualizza_deck(int [][10]);
void visualizza_mazzo(char*wmazzo[]);
void gioco(char *wmazzo[], const char *wseme[], const char*wval[], char *nome[]);
void roundv(char *qnome[] ,char *qmazzo[], const char *wseme[], const char*wval[], char *nome2[]);
int main(void)
{
char *mazzo[dim];
int deck[4][10]={0};
int j,m,n;
int scl;
int sess;
char *nome[dim];
int i;
do{
printf("--------------------\n");
printf("Sei maschio o femmina?\n");
printf("1)Maschio\n");
printf("2)Femmina\n");
scanf("%d", &sess);
if(sess < 1 || sess > 2){
printf("Errore hai inserito dei parametri invalidi\n");
}
}while(sess < 1 || sess > 2);
printf("---------------------\n");
printf("Come ti chiami?\n");
scanf("%s" ,&nome);
do{
printf("\n\n-----Alla Briscola Del Nonno-----\n\n");
if(sess == 1)
printf("Benvenuto %s scegli cosa vuoi fare\n" ,nome);
if(sess == 2)
printf("Benvenuta %s scegli cosa vuoi fare\n" ,nome);
printf("1)Voglio vedere il mazzo di carte\n");
printf("2)Voglio giocare contro un amico\n");
printf("0)Esci\n");
scanf("%d" ,&scl);
switch(scl){
case 1:
visualizza(seme, val);
break;
case 2:
mescola(deck);
visualizza_deck(deck);
creamazzo(deck, mazzo,seme,val);
visualizza_mazzo(mazzo);
gioco(mazzo, seme, val, nome);
break;
}
}while(scl != 0);
return 0;
}
void visualizza(const char *wseme[], const char *wval[])
{
int sem;
int valor;
int i;
i=1;
for(sem=0; sem<4; sem++){
for(valor=0; valor<10; valor++){
printf("%d)%s di %s\n" ,i++,wval[valor], wseme[sem]);
}
}
}
void mescola(int wdeck[][10])
{
int riga;
int colonna;
int carta;
for(carta=1; carta<=40; carta++){
do{
riga=rand()%4;
colonna=rand()%10;
}while(wdeck[riga][colonna] != 0);
wdeck[riga][colonna]=carta;
}
}
void visualizza_deck(int wdeck[][10])
{
int righe;
int colonne;
for(righe=0; righe<4; righe++){
for(colonne=0; colonne<10; colonne++){
//printf("[%d,%d] = %d\n",righe,colonne,wdeck[righe][colonne]);
}
}
}
void creamazzo(int wdeck[][10], char *wmazzo[],const char *wseme[], const char *wval[])
{
int cercato;
int riga;
int colonna;
bool trovato=false;
int i = 0;
for(cercato=1; cercato<=40; cercato++){
trovato = false;
for(riga=0; riga<4 && !trovato; riga++){
for(colonna=0; colonna<10 && !trovato; colonna++){
if(wdeck[riga][colonna]==cercato){
trovato=true;
}
}
}
wmazzo[i] = (char *)malloc(dim);
sprintf(wmazzo[i],"%s di %s" ,val[--colonna],seme[--riga]);
//wmazzo[i] = tmp;
//devi vedere wmazzo come un mazzo ma sottoforma di vettore, al quale indice viene assegnato il valore di tmp, che è a sua volta composto da sprintf
i++;
}
}
void visualizza_mazzo(char *wmazzo[])
{
int i;
for (i=0; i<40; i++)
{
//printf("%s\n" ,wmazzo[i]);
}
}
void gioco(char *wmazzo[],const char*wseme[], const char*wval[],char *wnome[])
{
int carte;
char *nome2[dim];
int round;
int turno;
printf("--------------------------\n");
printf("Come si chiama il tuo avversario?\n");
scanf("%s" ,nome2);
do{
printf("--------------------------\n");
printf("Quanti round volete fare?\n");
printf("1)Un solo round\n");
printf("2)Due Round\n");
printf("3)Tre Round \n");
printf("0)Voglio uscire\n");
scanf("%d" ,&round);
if(round < 0 || round > 3)
{
printf("hai inserito dei valori invalidi");
}
switch(round){
case 1:
do{
printf("--------------------\n");
printf("Chi vuole fare il mazziere?\n");
printf("1)%s\n" ,wnome);
printf("2)%s\n" ,nome2);
scanf("%d" ,&turno);
}while(turno < 1 || turno > 2);
if(turno==1)
roundv(wnome, wmazzo, wseme, wval, nome2);
break;
}
}while(round != 0);
}
void roundv(char *qnome[],char *qmazzo[], const char *qseme[], const char *qval[], char *wnome2[])
{
const int*punto[10]={11,0,10,0,0,0,0,2,3,4];
int punti1[pnt];
int punti2[pnt];
//char *mano1[3];
//char *mano2[3];
int carta=0;
int scl;
int mano;
int lancio;
printf("la Briscola e' %s\n" ,qmazzo[0]);
qmazzo[0]=qmazzo[1];
printf("--------------------\n");
printf("turno di %s\n" ,wnome2);
printf("********************\n");
do{
for(mano=0; mano<3; mano++)
{
carta++;
printf("%d)%s\n" ,mano+1,qmazzo[carta]);
}
printf("********************\n");
printf("quale carta vuoi lanciare?\n");
scanf("%d" ,&lancio);
printf("Carta in gioco:%s" ,qmazzo[lancio]);
}while(carta != 40);
}
ovviamente a fine programma, alcune funzioni ( di visualizzazione ) verranno eliminate, lasciando il necessario