PDA

Visualizza la versione completa : [C] Programma Briscola


hanb21
17-01-2006, 23:50
ragazzi ho un problema con questo programma in c che ho fatto, lo devo presentare domani e sono in alto mare non riesco a superare un errore che mi esce..

il programma è basato sul gioco della briscola.
2 giocatori, 3 carte ciascuno scelte dallo user, lo stesso vale per i semi delle carte e il seme della briscola stessa.

fino all'inserimento dei valori va tutto ok, poi quando chiedo al programma di stamparmi i valori delle carte dei due giocatori, anzichè riportarmi i valori delle carte mi piazza altri numeri... boh... se mi date una mano vi ringrazio già adesso! ciao

PROGRAMMA:



#include<stdio.h>
#include<string.h>

typedef struct {
int seme;
int valorecarta;
}cartadagioco;


// funzione giocatore e carte (3) in suo possesso.

typedef struct{
char nome[4];
cartadagioco carte_mano[3];
}giocatore;


// funzione che stampa il giocatore e le carte in possesso.

void stampa(giocatore x){
int alfa;
printf("\n\n");
for (alfa = 0; alfa < 4; alfa++) {
printf("%c", x.nome[alfa]);
}
int i;
for(i=0 ;i<3 ;i++){
printf("\n\n%d) %d di %c",i,x.carte_mano[i].valorecarta,x.carte_mano[i].seme); }
}



// funzione che assegna i punteggi alle carte.

int punti (cartadagioco){
cartadagioco x;
if(x.valorecarta==1) { return 11; }
else{
if(x.valorecarta==3) { return 10; }
else{
if(x.valorecarta==10) { return 4; }
else{
if(x.valorecarta==9) { return 3; }
else{
if(x.valorecarta==8) { return 2; }
}}}}}


// funzione vincente per verificare le carte giocate e il vincitore.

int vincente(cartadagioco A, cartadagioco B, int primo, char semebriscola) {
if (A.seme == semebriscola && B.seme != semebriscola) { return 1; }
else { if (B.seme == semebriscola && A.seme != semebriscola) { return 2; }
else { if (A.seme == B.seme) {

if (punti(A) == punti(B)) {
if (A.valorecarta > B.valorecarta) { return 1; }
else { return 2; }
}
else {
if (punti(A) > punti(B)) { return 1; }
else { return 2; }
}

}
else { return primo; }
}}
}


// Main del programma.

int main (){

giocatore A;
giocatore B;
cartadagioco x;
int i,k;
i=0;
k=0;
int a,s;
a=0;
s=0;
char semebriscola;

printf ("\nInserisci il seme della briscola (0=denari, 1=spade, 2=coppe, 3=bastoni): ");
scanf ("%c", & semebriscola);

// Inserisci dati giocatore 1.

printf("\nInserire il nome del giocatore 1 (3 lettere): ");
for (i=0; i<4; i++) {
scanf("%c", &A.nome[i]);
}

for(k=0;k<3;k++){
do
{
printf ("\nInserisci il valore della carta: ");
scanf ("%d",& x.valorecarta);
}
while ((x.valorecarta<1)||(x.valorecarta>10));

do
{
printf ("\nInserisci il seme (0=denari, 1=spade, 2=coppe, 3=bastoni): ");
scanf ("%d",&x.seme);
}
while ((x.seme!=0)&&(x.seme!=1)&&(x.seme!=2)&&(x.seme!=3));

if (x.seme==0) {
printf ("\n\n * %d di denari *\n\n", x.valorecarta); }
else { if (x.seme==1) {
printf ("\n\n * %d di spade *\n\n", x.valorecarta); }
else { if (x.seme==2) {
printf ("\n\n * %d di coppe *\n\n", x.valorecarta); }
else { if (x.seme==3) {
printf ("\n\n * %d di bastoni *\n\n ", x.valorecarta); }
}}}
}

// Inserisci dati giocatore 2.

printf("\nInserire il nome del giocatore 2 (3 lettere): ");
for (a=0; a<4; a++) {
scanf("%c", &B.nome[a]);
}

for(s=0;s<3;s++){
do
{
printf ("\nInserisci il valore della carta: ");
scanf ("%d",& x.valorecarta);
}
while ((x.valorecarta<1)||(x.valorecarta>10));
do
{
printf ("\nInserisci il seme (0=denari, 1=spade, 2=coppe, 3=bastoni): ");
scanf ("%d",&x.seme);
}
while ((x.seme!=0)&&(x.seme!=1)&&(x.seme!=2)&&(x.seme!=3));

if (x.seme==0) {
printf ("\n\n * %d di denari *\n\n", x.valorecarta); }
else { if (x.seme==1) {
printf ("\n\n * %d di spade *\n\n", x.valorecarta); }
else { if (x.seme==2) {
printf ("\n\n * %d di coppe *\n\n", x.valorecarta); }
else { if (x.seme==3) {
printf ("\n\n * %d di bastoni *\n\n ", x.valorecarta); }
}}}
}

// Partita di briscola.

int cartagiocata[3];
int h;
h=0;
stampa(A);
stampa(B);

for(h=0;h<3;h++){
printf("\n\nQuale carta vuoi giocare, %c? ", A.nome[i]);
scanf("%d",&cartagiocata[1]);
printf("quale carta scegli, %s? ", B.nome);
scanf("%d",&cartagiocata[2]);
if (vincente(A.carte_mano[cartagiocata[1]], B.carte_mano[cartagiocata[2]], 1, semebriscola) == 1) { printf("vince %s", A.nome); }
else { printf("vince %s", B.nome); }}

}

Ermac
12-05-2006, 13:30
se sei di TWM il termine l'ha spostato a fine mese

alka
12-05-2006, 14:09
Originariamente inviato da Ermac
se sei di TWM il termine l'ha spostato a fine mese
Usa i messaggi privati per la comunicazione con gli utenti.

oregon
12-05-2006, 15:19
Tu usi due strutture per i giocatori e le carte che chiami A e B.
Ma l'input delle carte lo fai in una struttura x.

Così facendo non avrai le carte nelle strutture A e B ...

Loading