Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] Programma Briscola

  1. #1

    problema programma C briscola

    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); }}

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    47
    se sei di TWM il termine l'ha spostato a fine mese

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    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.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    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 ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.