Oppure

Loading
03/01/12 17:34
anthony015
potresti per esempio mettere un flag all'interno della struct del giocatore che indica se può tirare il dado, nel momento in cui va nella casella della prigione lo disattivi e attivi un contatore di turni che dopo 3 turni riattiva il giocatore...
questo si può applicare anche al primo problema del punto 3 che hai scritti prima...
aaa
04/01/12 23:20
konan_ 65
ok, grazie mille

altra domandina, siccome ho pensato il gioco da 2 a 4 persone, esiste un qualche modo per far si che non debba ripetere il codice millemila volte? mi spiego meglio, esiste un qualche comando che, chessò, immesso in un ciclo for, mi trasformi la variabile giocatore1 in giocatore2, giocatore3 e giocatore4 e così via anche tutte le altre variabili che ho inserito? così da dover scrivere una volta sola il codice e poterlo inserire tutto dentro questo ciclo che vada avanti in base al numero di giocatori...

non so se son stato molto chiaro
aaa
05/01/12 0:11
anthony015
potresti mettere un flag per ogni giocatore che indica se gioca, se non gioca la sua fase nel turno viene saltata...
Ultima modifica effettuata da anthony015 05/01/12 0:12
aaa
06/01/12 22:56
konan_ 65
grazie per la dritta dei flag, però continua a darmi il seguente errore!

25 [Warning] multi-character character constant In function `main':

di seguito il codice

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NOME 10
#define RIGHE 7
#define COLONNE 9


int numeroGiocatori;
char giocatore1[NOME];
char giocatore2[NOME];
char giocatore3[NOME];
char giocatore4[NOME];
char risposta[NOME];
int flagGiocatore1 = 0;
int flagGiocatore2 = 0;
int flagGiocatore3 = 0;
int flagGiocatore4 = 0;
int flagCasa1 = 0;
int flagCasa2 = 0;
int flagCasa3 = 0;
int flagCasa4 = 0;
int turnoCasa1;
int turnoCasa2;
int turnoCasa3;
int turnoCasa4;
int dado;
int turno = 1;
int tiri1 = 0;
int tiri2 = 0;
int tiri3 = 0;
int tiri4 = 0;
int eccedenza;
int i;
int j;
int numero = 1;
int campo[RIGHE][COLONNE];

int main()
{
    printf("Gioco Dell'Oca\n");
    printf("Inserire il numero di giocatori da 2 a 4: ");
    scanf("%d", &numeroGiocatori);
    if (numeroGiocatori == 2)
    {
        flagGiocatore3 = 1;
        flagGiocatore4 = 1;
        printf("Inserisci un nome per il Giocatore 1 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore1);
        printf("Inserisci un nome per il Giocatore 2 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore2);
    }    
    else if (numeroGiocatori == 3)
    {
        flagGiocatore4 =1;
        printf("Inserisci un nome per il Giocatore 1 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore1);
        printf("Inserisci un nome per il Giocatore 2 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore2);
        printf("Inserisci un nome per il Giocatore 3 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore3);
    }    
    else
    {
        printf("Inserisci un nome per il Giocatore 1 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore1);
        printf("Inserisci un nome per il Giocatore 2 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore2);
        printf("Inserisci un nome per il Giocatore 3 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore3);
        printf("Inserisci un nome per il Giocatore 4 (massimo 10 caratteri):\n");
        scanf("%s", &giocatore4);
    }    
    
    for (i=0; i<RIGHE; i++)
    {
        for (j=0; j<COLONNE; j++)
        {
            campo[i][j] = numero;
            ++numero;
        }      
    }
    
    while (tiri1<63 || tiri2<63 || tiri3<63 || tiri4<63)
    {
        printf("Turno %d\n", turno);
        turno++;
        
        for (i=0; i<RIGHE; i++)
        {
            printf("\n");
            for (j=0; j<COLONNE; j++)
            {
                if (tiri1 == campo[i][j])
                {
                    printf("     G1");
                }    
                if (tiri2 == campo [i][j])
                {
                    printf("     G2");
                }
                if (flagGiocatore3 == 0)
                {
                    if (tiri3 == campo[i][j])
                    {
                        printf("     G3");
                    }    
                } 
                if (flagGiocatore4 == 0)
                {
                    if (tiri4 == campo[i][j])
                    {
                        printf("     G4");
                    }    
                } 
            }    
        }
        
        printf("\n");
        printf("Tocca a %s\nCominciare il turno? (Si, No)\n", giocatore1);
        scanf("%s", &risposta);
        if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')  
        {
            if (tiri1 == 19)
            {
                ++turnoCasa1;
                if (turnoCasa1 == 3)
                {
                    printf("Sei libero dalla casa!");
                    turnoCasa1 = 0;
                    flagCasa1 = 0;
                }    
            }
            else if (tiri1 == 39)
            {
                if (tiri1 == tiri2 || tiri1 == tiri3 || tiri1 == tiri4)
                {
                    printf("Sei libero dal pozzo!");
                    flagCasa1 = 0;
                } 
                else
                {
                    printf("Sei ancora nel pozzo, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }      
            }
            else if (tiri1 == 52)
            {
                if (tiri1 == tiri2 || tiri1 == tiri3 || tiri1 == tiri4)
                {
                    printf("Sei fuori dalla prigione!");
                    flagCasa1 = 0;
                }    
                else
                {
                    printf("Sei ancora in prigione, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }
            }  
            else
            {
                if (flagCasa1 == 0)
                {
                    dado = 0;
                    srand(time(NULL));  
                    dado = rand() % 6;
                    dado++;
                    printf("Il lancio del dado ha prodotto la faccia %d\n",dado);
                
                    tiri1 = tiri1 + dado;
                    
                    if (tiri1 == 5 || tiri1 == 14 || tiri1 == 23 || tiri1 == 32 || tiri1 == 41 || tiri1 == 50 || tiri1 == 59|| 
                tiri1 ==9 || tiri1 == 18 || tiri1 == 27 || tiri1 == 36 || tiri1 == 45 || tiri1 == 54)
                {
                    printf("Casella %d\nCasella speciale Oca!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri1, giocatore1);
                    tiri1 = tiri1 + dado;
                    printf("%s si trova nella casella numero %d\n",giocatore1, tiri1);  
                } 
                else if (tiri1 == 6)
                {
                    printf("Casella %d\nCasella speciale Il Ponte!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri1, giocatore1);
                    tiri1 = tiri1 + dado;
                    printf("%s si trova nella casella numero %d\n", giocatore1, tiri1);
                } 
                else if (tiri1 == 39)
                {
                    printf("Casella %d\nCasella speciale Il Pozzo!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri1);
                    flagCasa1 = 1;
                }       
                else if (tiri1 == 52)
                {
                    printf("Casella %d\nCasella speciale Prigione!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri1);
                    flagCasa1 = 1;
                }    
                else if (tiri1 == 42)
                {
                    printf("Casella %d\nCasella speciale Labirinto!\n%s ritorna alla casella 39!\n", tiri1, giocatore1);
                    tiri1 = 39;
                }    
                else if (tiri1 > 63)
                {
                    eccedenza = tiri1-63;
                    tiri1=63-eccedenza;
                    printf("La casella 63 va raggiunta con un tiro esatto\n%s si trova ora nella casella %d\n", giocatore1, tiri1);
                }
                else if (tiri1 == 63)
                {
                    printf("Complimenti %s ha vinto!!\n", giocatore1);
                }
                else
                {
                    printf("%s si trova nella casella %d\n\n",giocatore1,tiri1);
                } 
                }    
            }
            else
            {
                printf("Vuoi uscire? (Si, No)\n");
                scanf("%s", &risposta);
                
                if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')
                {
                    break;
                }    
                else
                {
                    printf("Si ricomincia!!");
                    return 0;
                }       
            }   
            
            printf("\n");
        printf("Tocca a %s\nCominciare il turno? (Si, No)\n", giocatore2);
        scanf("%s", &risposta);
        if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')  
        {
            if (tiri2 == 19)
            {
                ++turnoCasa2;
                if (turnoCasa2 == 3)
                {
                    printf("Sei libero dalla casa!");
                    turnoCasa2 = 0;
                    flagCasa2 = 0;
                }    
            }
            else if (tiri2 == 39)
            {
                if (tiri1 == tiri2 || tiri2 == tiri3 || tiri2 == tiri4)
                {
                    printf("Sei libero dal pozzo!");
                    flagCasa1 = 0;
                } 
                else
                {
                    printf("Sei ancora nel pozzo, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }      
            }
            else if (tiri2 == 52)
            {
                if (tiri1 == tiri2 || tiri2 == tiri3 || tiri2 == tiri4)
                {
                    printf("Sei fuori dalla prigione!");
                    flagCasa2 = 0;
                }    
                else
                {
                    printf("Sei ancora in prigione, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }
            }  
            else
            {
                if (flagCasa2 == 0)
                {
                    dado = 0;
                    srand(time(NULL));  
                    dado = rand() % 6;
                    dado++;
                    printf("Il lancio del dado ha prodotto la faccia %d\n",dado);
                
                    tiri2 = tiri2 + dado;
                    
                    if (tiri2 == 5 || tiri2 == 14 || tiri2 == 23 || tiri2 == 32 || tiri2 == 41 || tiri2 == 50 || tiri2 == 59|| 
                tiri2 ==9 || tiri2 == 18 || tiri2 == 27 || tiri2 == 36 || tiri2 == 45 || tiri2 == 54)
                {
                    printf("Casella %d\nCasella speciale Oca!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri1, giocatore1);
                    tiri2 = tiri2 + dado;
                    printf("%s si trova nella casella numero %d\n",giocatore2, tiri2);  
                } 
                else if (tiri2 == 6)
                {
                    printf("Casella %d\nCasella speciale Il Ponte!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri1, giocatore1);
                    tiri2 = tiri2 + dado;
                    printf("%s si trova nella casella numero %d\n", giocatore2, tiri2);
                } 
                else if (tiri2 == 39)
                {
                    printf("Casella %d\nCasella speciale Il Pozzo!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri2);
                    flagCasa2 = 1;
                }       
                else if (tiri2 == 52)
                {
                    printf("Casella %d\nCasella speciale Prigione!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri2);
                    flagCasa2 = 1;
                }    
                else if (tiri2 == 42)
                {
                    printf("Casella %d\nCasella speciale Labirinto!\n%s ritorna alla casella 39!\n", tiri2, giocatore2);
                    tiri2 = 39;
                }    
                else if (tiri2 > 63)
                {
                    eccedenza = tiri2-63;
                    tiri2=63-eccedenza;
                    printf("La casella 63 va raggiunta con un tiro esatto\n%s si trova ora nella casella %d\n", giocatore2, tiri2);
                }
                else if (tiri2 == 63)
                {
                    printf("Complimenti %s ha vinto!!\n", giocatore2);
                }
                else
                {
                    printf("%s si trova nella casella %d\n\n",giocatore2,tiri2);
                } 
                }    
            }
            else
            {
                printf("Vuoi uscire? (Si, No)\n");
                scanf("%s", &risposta);
                
                if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')
                {
                    break;
                }    
                else
                {
                    printf("Si ricomincia!!");
                    return 0;
                }       
            }  
            
            if (flagGiocatore3 ==0)
            {
                     printf("\n");
        printf("Tocca a %s\nCominciare il turno? (Si, No)\n", giocatore3);
        scanf("%s", &risposta);
        if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')  
        {
            if (tiri3 == 19)
            {
                ++turnoCasa3;
                if (turnoCasa3 == 3)
                {
                    printf("Sei libero dalla casa!");
                    turnoCasa3 = 0;
                    flagCasa3 = 0;
                }    
            }
            else if (tiri3 == 39)
            {
                if (tiri1 == tiri3 || tiri2 == tiri3 || tiri3 == tiri4)
                {
                    printf("Sei libero dal pozzo!");
                    flagCasa3 = 0;
                } 
                else
                {
                    printf("Sei ancora nel pozzo, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }      
            }
            else if (tiri3 == 52)
            {
                if (tiri1 == tiri3 || tiri2 == tiri3 || tiri3 == tiri4)
                {
                    printf("Sei fuori dalla prigione!");
                    flagCasa3 = 0;
                }    
                else
                {
                    printf("Sei ancora in prigione, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }
            }  
            else
            {
                if (flagCasa3 == 0)
                {
                    dado = 0;
                    srand(time(NULL));  
                    dado = rand() % 6;
                    dado++;
                    printf("Il lancio del dado ha prodotto la faccia %d\n",dado);
                
                    tiri3 = tiri3 + dado;
                    
                    if (tiri3 == 5 || tiri3 == 14 || tiri3 == 23 || tiri3 == 32 || tiri3 == 41 || tiri3 == 50 || tiri3 == 59|| 
                tiri3 ==9 || tiri3 == 18 || tiri3 == 27 || tiri3 == 36 || tiri3 == 45 || tiri3 == 54)
                {
                    printf("Casella %d\nCasella speciale Oca!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri3, giocatore3);
                    tiri3 = tiri3 + dado;
                    printf("%s si trova nella casella numero %d\n",giocatore3, tiri3);  
                } 
                else if (tiri3 == 6)
                {
                    printf("Casella %d\nCasella speciale Il Ponte!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri3, giocatore3);
                    tiri3 = tiri3 + dado;
                    printf("%s si trova nella casella numero %d\n", giocatore3, tiri3);
                } 
                else if (tiri3 == 39)
                {
                    printf("Casella %d\nCasella speciale Il Pozzo!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri3);
                    flagCasa3 = 1;
                }       
                else if (tiri3 == 52)
                {
                    printf("Casella %d\nCasella speciale Prigione!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri3);
                    flagCasa3 = 1;
                }    
                else if (tiri3 == 42)
                {
                    printf("Casella %d\nCasella speciale Labirinto!\n%s ritorna alla casella 39!\n", tiri3, giocatore3);
                    tiri3 = 39;
                }    
                else if (tiri3 > 63)
                {
                    eccedenza = tiri3-63;
                    tiri3=63-eccedenza;
                    printf("La casella 63 va raggiunta con un tiro esatto\n%s si trova ora nella casella %d\n", giocatore3, tiri3);
                }
                else if (tiri3 == 63)
                {
                    printf("Complimenti %s ha vinto!!\n", giocatore3);
                }
                else
                {
                    printf("%s si trova nella casella %d\n\n",giocatore3,tiri3);
                } 
                }    
            }
            else
            {
                printf("Vuoi uscire? (Si, No)\n");
                scanf("%s", &risposta);
                
                if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')
                {
                    break;
                }    
                else
                {
                    printf("Si ricomincia!!");
                    return 0;
                }       
            }   
            
            if (flagGiocatore4 ==0)
            {
                     printf("\n");
        printf("Tocca a %s\nCominciare il turno? (Si, No)\n", giocatore4);
        scanf("%s", &risposta);
        if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')  
        {
            if (tiri4 == 19)
            {
                ++turnoCasa4;
                if (turnoCasa4 == 3)
                {
                    printf("Sei libero dalla casa!");
                    turnoCasa4 = 0;
                    flagCasa4 = 0;
                }    
            }
            else if (tiri4 == 39)
            {
                if (tiri1 == tiri4 || tiri2 == tiri4 || tiri3 == tiri4)
                {
                    printf("Sei libero dal pozzo!");
                    flagCasa4 = 0;
                } 
                else
                {
                    printf("Sei ancora nel pozzo, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }      
            }
            else if (tiri4 == 52)
            {
                if (tiri1 == tiri4 || tiri2 == tiri4 || tiri3 == tiri4)
                {
                    printf("Sei fuori dalla prigione!");
                    flagCasa4 = 0;
                }    
                else
                {
                    printf("Sei ancora in prigione, ci rimani fino a quando qualcuno non prende il tuo posto!");
                }
            }  
            else
            {
                if (flagCasa4 == 0)
                {
                    dado = 0;
                    srand(time(NULL));  
                    dado = rand() % 6;
                    dado++;
                    printf("Il lancio del dado ha prodotto la faccia %d\n",dado);
                
                    tiri4 = tiri4 + dado;
                    
                    if (tiri4 == 5 || tiri4 == 14 || tiri4 == 23 || tiri4 == 32 || tiri4 == 41 || tiri4 == 50 || tiri4 == 59|| 
                tiri4 ==9 || tiri4 == 18 || tiri4 == 27 || tiri4 == 36 || tiri4 == 45 || tiri4 == 54)
                {
                    printf("Casella %d\nCasella speciale Oca!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri3, giocatore3);
                    tiri4 = tiri4 + dado;
                    printf("%s si trova nella casella numero %d\n",giocatore4, tiri4);  
                } 
                else if (tiri4 == 6)
                {
                    printf("Casella %d\nCasella speciale Il Ponte!\n%s si muove nuovamente del tiro prima effettuato!\n",tiri4, giocatore4);
                    tiri4 = tiri4 + dado;
                    printf("%s si trova nella casella numero %d\n", giocatore4, tiri4);
                } 
                else if (tiri4 == 39)
                {
                    printf("Casella %d\nCasella speciale Il Pozzo!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri4);
                    flagCasa4 = 1;
                }       
                else if (tiri4 == 52)
                {
                    printf("Casella %d\nCasella speciale Prigione!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", tiri4);
                    flagCasa4 = 1;
                }    
                else if (tiri4 == 42)
                {
                    printf("Casella %d\nCasella speciale Labirinto!\n%s ritorna alla casella 39!\n", tiri4, giocatore4);
                    tiri4 = 39;
                }    
                else if (tiri4 > 63)
                {
                    eccedenza = tiri4-63;
                    tiri4=63-eccedenza;
                    printf("La casella 63 va raggiunta con un tiro esatto\n%s si trova ora nella casella %d\n", giocatore4, tiri4);
                }
                else if (tiri4 == 63)
                {
                    printf("Complimenti %s ha vinto!!\n", giocatore4);
                }
                else
                {
                    printf("%s si trova nella casella %d\n\n",giocatore4,tiri4);
                } 
                }    
            }
            else
            {
                printf("Vuoi uscire? (Si, No)\n");
                scanf("%s", &risposta);
                
                if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')
                {
                    break;
                }    
                else
                {
                    printf("Si ricomincia!!");
                    return 0;
                }       
            }
            }             
    }    
    
    
    
    
    system("pause");
    return 0;
}    
Ultima modifica effettuata da konan_ 65 06/01/12 22:57
aaa
07/01/12 16:26
anthony015
quello è solo uno warning, per cui il programma viene compilato ugualmente...

comunque quello warning è legato a righe come questa che hai scritto più volte;
if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')

non essendo "si" un carattere dovresti usare i doppi apici:
if (risposta == "Si" || risposta == "si" || risposta == "SI")




già che ci sono ti do un altro consiglio, potresti evitare di usare così tante variabili tipo:
char giocatore1[NOME];
char giocatore2[NOME];
char giocatore3[NOME];
char giocatore4[NOME];
int flagGiocatore1 = 0;
int flagGiocatore2 = 0;
int flagGiocatore3 = 0;
int flagGiocatore4 = 0;
int flagCasa1 = 0;
int flagCasa2 = 0;
int flagCasa3 = 0;
int flagCasa4 = 0;
int turnoCasa1;
int turnoCasa2;
int turnoCasa3;
int turnoCasa4;
int tiri1 = 0;
int tiri2 = 0;
int tiri3 = 0;
int tiri4 = 0;


e utilizzare delle struct (cprogramminglanguage.net/…), così hai la struttura di ogni giocatore che comprende i suoi flag, nomi eccetera e al momento di scrivere il gioco vero e proprio crei un array di giocatori e anzi che dovere scrivere chilometri di codice, metti tutto in un ciclo, dato che ogni turno è uguale per tutti...
Ultima modifica effettuata da anthony015 07/01/12 16:44
aaa
09/01/12 10:14
konan_ 65
Postato originariamente da anthony015:
già che ci sono ti do un altro consiglio, potresti evitare di usare così tante variabili tipo:
char giocatore1[NOME];
char giocatore2[NOME];
char giocatore3[NOME];
char giocatore4[NOME];
int flagGiocatore1 = 0;
int flagGiocatore2 = 0;
int flagGiocatore3 = 0;
int flagGiocatore4 = 0;
int flagCasa1 = 0;
int flagCasa2 = 0;
int flagCasa3 = 0;
int flagCasa4 = 0;
int turnoCasa1;
int turnoCasa2;
int turnoCasa3;
int turnoCasa4;
int tiri1 = 0;
int tiri2 = 0;
int tiri3 = 0;
int tiri4 = 0;


e utilizzare delle struct (cprogramminglanguage.net/…), così hai la struttura di ogni giocatore che comprende i suoi flag, nomi eccetera e al momento di scrivere il gioco vero e proprio crei un array di giocatori e anzi che dovere scrivere chilometri di codice, metti tutto in un ciclo, dato che ogni turno è uguale per tutti...


non ho capito la parte degli arrey di giocatori, allora, io creo una struct per ogni giocatore con tutte le sue variabili, giusto? dopo di che come creo un'arrey di giocatori? cioè io creo un arrey (di che tipo char o int?), chiamato chessò giocatori[4] e che ci metto dentro? le struct? e come? dopo di che creo u ciclo for ma come faccio, ad esempio per i flag?:-|
aaa
09/01/12 12:59
konan_ 65
ok scherzavo, ho capito e penso di esserci riuscito, il codice è questo

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NOME 10
#define RIGHE 7
#define COLONNE 9

struct gioc{
    char giocatore[NOME];
    int flagCasa;
    int turnoCasa;
    int tiri;
} giocatori[4];

char risposta[NOME];
int turno = 1;
int numeroGiocatori;
int dado;
int eccedenza;
int i;
int j;
int r;
int c;
int numero = 1;
int campo[RIGHE][COLONNE];

int main(){
    
    printf("Gioco Dell'Oca\n");
    printf("Inserire il numero di giocatori da 2 a 4: ");
    scanf("%d", &numeroGiocatori);
    
    for (i=0; i<numeroGiocatori; i++){
        printf("Inserisci un nome per il Giocatore %d (massimo 10 caratteri):\n", i+1);
        scanf("%s", &giocatori[i].giocatore);
        giocatori[i].flagCasa = 0;
        giocatori[i].tiri = 0;
        giocatori[i].turnoCasa = 0;
    }   
        
    for (r=0; r<RIGHE; r++){
        for (c=0; c<COLONNE; c++)
        {
            campo[r][c] = numero;
            ++numero;
        }      
    }
    
    for (i=0; i<numeroGiocatori; i++){
        while (giocatori[i].tiri<63){
            printf("Turno %d\n", turno);
            turno++; 
            
            for (r=0; r<RIGHE; r++){
                printf("\n");
                for (c=0; c<COLONNE; c++){
                    if (giocatori[i].tiri == campo[r][c]){
                        printf("     G%d", i);
                    }
                    else{
                        printf("%7d", campo[r][c]);
                    }
                }
            }                
   
            printf("\n");
            printf("Tocca a %s\nCominciare il turno? (Si, No)\n", giocatori[i].giocatore);
            scanf("%s", &risposta);
            if (risposta == 'Si' || risposta == 'si' || risposta == 'SI'){
                if (giocatori[i].flagCasa == 1){
                    
                    if (giocatori[i].tiri == 19){
                        ++giocatori[i].turnoCasa;
                        
                        if (giocatori[i].turnoCasa == 3){
                            printf("Sei libero dalla casa!");
                            giocatori[i].turnoCasa = 0;
                            giocatori[i].flagCasa = 0;
                        }      
                    } 
                    
                    else if (giocatori[i].tiri == 39){
                        
                        if (giocatori[i].tiri == giocatori[i+1].tiri || giocatori[i].tiri == giocatori[i+2].tiri || 
                        giocatori[i].tiri == giocatori[i+3].tiri || giocatori[i].tiri == giocatori[i-1].tiri || 
                        giocatori[i].tiri == giocatori[i-2].tiri || giocatori[i].tiri == giocatori[i-3].tiri){
                            printf("Sei libero dal pozzo!");
                            giocatori[i].flagCasa = 0;
                        }
                        else{
                            printf("Sei ancora nel pozzo, ci rimani fino a quando qualcuno non prende il tuo posto!");
                        }
                    }          
                    else if (giocatori[i].tiri == 52){
                        
                        if (giocatori[i].tiri == giocatori[i+1].tiri || giocatori[i].tiri == giocatori[i+2].tiri || 
                        giocatori[i].tiri == giocatori[i+3].tiri || giocatori[i].tiri == giocatori[i-1].tiri || 
                        giocatori[i].tiri == giocatori[i-2].tiri || giocatori[i].tiri == giocatori[i-3].tiri){
                            printf("Sei fuori dalla prigione!");
                            giocatori[i].flagCasa = 0;
                        }
                        else{
                            printf("Sei ancora in prigione, ci rimani fino a quando qualcuno non prende il tuo posto!");
                        }
                    }             
                }     
                else{
                    
                    dado = 0;
                    srand(time(NULL));  
                    dado = rand() % 6;
                    dado++;
                    printf("Il lancio del dado ha prodotto la faccia %d\n",dado);
                
                    giocatori[i].tiri = giocatori[i].tiri + dado;
                    
                    if (giocatori[i].tiri == 5 || giocatori[i].tiri == 14 || giocatori[i].tiri == 23 || giocatori[i].tiri == 32 || 
                    giocatori[i].tiri == 41 || giocatori[i].tiri == 50 || giocatori[i].tiri == 59|| giocatori[i].tiri ==9 || 
                    giocatori[i].tiri == 18 || giocatori[i].tiri == 27 || giocatori[i].tiri == 36 || giocatori[i].tiri == 45 || 
                    giocatori[i].tiri == 54)
                {
                    printf("Casella %d\nCasella speciale Oca!\n%s si muove nuovamente del tiro prima effettuato!\n",giocatori[i].tiri, giocatori[i].giocatore);
                    giocatori[i].tiri = giocatori[i].tiri + dado;
                    printf("%s si trova nella casella numero %d\n",giocatori[i].giocatore, giocatori[i].tiri);  
                } 
                else if (giocatori[i].tiri == 6)
                {
                    printf("Casella %d\nCasella speciale Il Ponte!\n%s si muove nuovamente del tiro prima effettuato!\n",giocatori[i].tiri, giocatori[i].giocatore);
                    giocatori[i].tiri = giocatori[i].tiri + dado;
                    printf("%s si trova nella casella numero %d\n", giocatori[i].giocatore, giocatori[i].tiri);
                } 
                else if (giocatori[i].tiri == 19)
                {
                    printf("Casella %d\nCasella speciale La Casa\nCi rimani 3 turni!", giocatori[i].tiri);
                    giocatori[i].flagCasa = 1;
                }    
                else if (giocatori[i].tiri == 39)
                {
                    printf("Casella %d\nCasella speciale Il Pozzo!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", giocatori[i].tiri);
                    giocatori[i].flagCasa = 1;
                }       
                else if (giocatori[i].tiri == 52)
                {
                    printf("Casella %d\nCasella speciale Prigione!\nCi rimani fino a quando un altro giocatore non prende il tuo posto!\n", giocatori[i].tiri);
                    giocatori[i].flagCasa = 1;
                }    
                else if (giocatori[i].tiri == 42)
                {
                    printf("Casella %d\nCasella speciale Labirinto!\n%s ritorna alla casella 39!\n", giocatori[i].tiri, giocatori[i].giocatore);
                    giocatori[i].tiri = 39;
                }    
                else if (giocatori[i].tiri > 63)
                {
                    eccedenza = giocatori[i].tiri-63;
                    giocatori[i].tiri=63-eccedenza;
                    printf("La casella 63 va raggiunta con un tiro esatto\n%s si trova ora nella casella %d\n", giocatori[i].giocatore, giocatori[i].tiri);
                }
                else if (giocatori[i].tiri == 63)
                {
                    printf("Complimenti %s ha vinto!!\n", giocatori[i].giocatore);
                }
                else
                {
                    printf("%s si trova nella casella %d\n\n",giocatori[i].giocatore,giocatori[i].tiri);
                } 
   
                    
                    
                }                                       
            }
            else{
                printf("Vuoi uscire? (Si, No)\n");
                scanf("%s", &risposta);
                
                if (risposta == 'Si' || risposta == 'si' || risposta == 'SI'){
                    break;
                }    
                else{
                    printf("Si ricomincia!!");
                    
                }       
            }    
                
            
            
            
        }    
    }         
    
    system("pause");
    return 0;
}    


va bene così? io purtroppo, non capisco perchè, ma non riesco a giocare, perchè ogni volta che compilo, quando arriva a chiedermi se iniziare il turno, non mi riesce a prendere i si come tali, quindi passa direttamente all'else... sapete perchè? inoltre come posso far ripartire il tutto in caso l'utente voglia ricominciare? (poi non sono sicuro dell'utilità del while, infatti nell'originale è commentato, ma non riuscendo a giocare per controllare...)
aaa
09/01/12 15:27
anthony015
Postato originariamente da anthony015:

quello è solo uno warning, per cui il programma viene compilato ugualmente...

comunque quello warning è legato a righe come questa che hai scritto più volte;
if (risposta == 'Si' || risposta == 'si' || risposta == 'SI')

non essendo "si" un carattere dovresti usare i doppi apici:
if (risposta == "Si" || risposta == "si" || risposta == "SI")




te l'avevo già scritto prima:pat:
aaa