Gioco della Tombola

di il
21 risposte

Gioco della Tombola

Buongiorno a tutti e buona Epifania, continuando il discorso di questo thread di qualche tempo fa https://www.iprogrammatori.it/forum-programmazione/cplusplus/aiuto-con-matrice-t45398.html, ho "finito", il gioco della tombola fatto da me.
Mi rendo conto però che il codice è grezzo, lungo, poco leggibile, ma nonostante tutti mi sento soddisfatto perchè fatto d me.
Ora mi potete dare qualche consiglio su come snellire il codice, cosa cambiare e/o migliorare?

#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    int r=3, c=5, estrazione[90];
    int contazeri=0, cont[5], contarighe[18];
    int contazeriG=0, contG[3], contarigheG[3];
    
    char risp;
    bool tombola=true;
    for(int i=0; i<5; i++){
        cont[i]=0;
    }
    for(int i=0; i<18; i++){
        contarighe[i]=0;
    }
    for(int i=0; i<3; i++){
        contarigheG[i]=0;
    }
    for(int i=0; i<3; i++){
        contG[i]=0;
    }
    int tabellone1[r][c]={{1, 2, 3, 4, 5}, {11, 12, 13, 14, 15}, {21, 22, 23, 24, 25}},
        tabellone2[r][c]={{6, 7, 8, 9, 10}, {16, 17, 18, 19, 20}, {26, 27, 28, 29, 30}},
        tabellone3[r][c]={{31, 32, 33, 34, 35}, {41, 42, 43, 44, 45}, {51, 52, 53, 54, 55}},
        tabellone4[r][c]={{36, 37, 38, 39, 40}, {46, 47, 48, 49, 50}, {56, 57, 58, 59, 60}},
        tabellone5[r][c]={{61, 62, 63, 64, 65}, {71, 72, 73, 74, 75}, {81, 82, 83, 84, 85}},
        tabellone6[r][c]={{66, 67, 68, 69, 70}, {76, 77, 78, 79, 80}, {86, 87, 88, 89, 90}};
    
    int giocatore1[r][c]={{16, 21, 31, 42, 60}, {1, 18, 33, 53, 62},{2, 38, 55, 69, 74}};
    srand((unsigned) time(NULL));
    
    cout<<"TABELLONE"<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone1[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone2[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone3[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone4[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone5[i][j]<<" ";
        }
        cout<<endl;
    }
    
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone6[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    
    cout<<"GIOCATORE 1"<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<giocatore1[i][j]<<" ";
        }
        cout<<endl;
    }
    
    cout<<endl<<endl;
    do{
    for(int i=0; i<80; i++){
        estrazione[i]=(rand()%90+1);
        for(int j=0; j<i; j++){
            if(estrazione[i]==estrazione[j]){
                i--;
                break;
            }
        }
    }
    
    for(int i=0; i<1; i++){
        cout<<"IL NUMERO ESTRATTO E': "<<estrazione[i]<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            for(int e=0; e<1; e++){
            if(tabellone1[i][j]==estrazione[e]){
                tabellone1[i][j]=0;
                cont[0]++;
                contazeri++;
            }
            if(tabellone2[i][j]==estrazione[e]){
                tabellone2[i][j]=0;
                cont[1]++;
                contazeri++;
            }
            if(tabellone3[i][j]==estrazione[e]){
                tabellone3[i][j]=0;
                 cont[2]++;
                 contazeri++;
            }
            if(tabellone4[i][j]==estrazione[e]){
                tabellone4[i][j]=0;
                    cont[3]++;
                    contazeri++;
            }
            if(tabellone5[i][j]==estrazione[e]){
                tabellone5[i][j]=0;
                 cont[4]++;
                 contazeri++;
            }
            if(tabellone6[i][j]==estrazione[e]){
                tabellone6[i][j]=0;
                 cont[5]++;
                 contazeri++;
            }
            if(giocatore1[i][j]==estrazione[e]){
                giocatore1[i][j]=0;
                contazeriG++;
               } 
            }
        }
    }
    cout<<"TABELLONE"<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone1[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone2[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone3[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone4[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone5[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<tabellone6[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    cout<<"GIOCATORE 1"<<endl;
    for(int i=0; i<r; i++){
        for(int j=0; j<c; j++){
            cout<<giocatore1[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;

   for(int i=0; i<18; i++){
        contarighe[i]=0;
    }
    for(int i=0; i<3; i++){
        contarigheG[i]=0;
    }
    for(int j=0; j<c; j++){
        if(tabellone1[0][j]==0){
            contarighe[0]++;
        }
        if(tabellone1[1][j]==0){
            contarighe[1]++;
        }
        if(tabellone1[2][j]==0){
            contarighe[2]++;
        }
        if(tabellone2[0][j]==0){
            contarighe[3]++;
        }
        if(tabellone2[1][j]==0){
            contarighe[4]++;
        }
        if(tabellone2[2][j]==0){
            contarighe[5]++;
        }
        if(tabellone3[0][j]==0){
           contarighe[6]++;
        }
        if(tabellone3[1][j]==0){
            contarighe[7]++;
        }
        if(tabellone3[2][j]==0){
            contarighe[8]++;
        }
        if(tabellone4[0][j]==0){
           contarighe[9]++;
        }
        if(tabellone4[1][j]==0){
            contarighe[10]++;
        }
        if(tabellone4[2][j]==0){
            contarighe[11]++;
        }
        if(tabellone5[0][j]==0){
            contarighe[12]++;
        }
        if(tabellone5[1][j]==0){
            contarighe[13]++;
        }
        if(tabellone5[2][j]==0){
            contarighe[14]++;
        }
        if(tabellone6[0][j]==0){
            contarighe[15]++;
        }
        if(tabellone6[1][j]==0){
           contarighe[16]++;
        }
        if(tabellone6[2][j]==0){
            contarighe[17]++;
        }
    }
    
    for(int j=0; j<c; j++){
        if(giocatore1[0][j]==0){
           contarigheG[0]++;
        }
        if(giocatore1[1][j]==0){
           contarigheG[1]++;
        }
        if(giocatore1[2][j]==0){
           contarigheG[2]++;
        }
    }
        for(int i=0; i<18; i++){
           
            if(contarighe[i]==2){
                cout<<"AMBO!"<<endl;
            }
           
            if(contarighe[i]==3){
                
                cout<<"TERNO!"<<endl;
             }
            if(contarighe[i]==4){
                cout<<"QUATERNA"<<endl;
            }
            if(contarighe[i]==5){
                cout<<"CINQUINA!"<<endl;
            }
        }
    for(int i=0; i<6; i++){
        if(cont[i]==15){
            cout<<"TOMBOLA! "<<endl;
        }
    }
            
            for(int i=0; i<3; i++){
               
                if(contarigheG[i]==2){
                    cout<<"Il giocatore 1 ha fatto Ambo! "<<endl;
                    
                }
                else if(contarigheG[i]==3){
                    
                    cout<<"Il giocatore 1 ha fatto Terno! "<<endl;
                    break;
                }
                else if(contarigheG[i]==4){
                    cout<<"Il giocatore 1 ha fatto Quaterna! "<<endl;
                }
                else if(contarigheG[i]==5){
                    cout<<"Il giocatore 1 ha fatto Cinquina! "<<endl;
                    break;
                }
                if(contazeriG==15){
                    cout<<"Il giocatore 1 ha fatto TOMBOLA! "<<endl;
                }
            }
    
    for(int i=0; i<6; i++){
        cout<<"zeri matrice: "<<i+1<<" "<<cont[i]<<endl;
    }  
    /*for(int i=0; i<3; i++){
        cout<<"zeri Giocatore 1: "<<i+1<<" "<<contG[i]<<" "<<endl;
    }*/
    
    cout<<"Numeri usciti: "<<contazeri<<endl;
    cout<<"zeri giocatore 1: "<<contazeriG<<endl;
    for(int i=0; i<18; i++){
        cout<<contarighe[i]<<" ";
    }
    cout<<endl;
    for(int i=0; i<3; i++){
        cout<<contarigheG[i]<<" ";
    }
    cout<<endl;
   
    for(int i=0; i<6; i++){
    if(cont[i]==15){
        tombola=false;
    }
    }
    for(int i=0; i<3; i++){
    if(contG[i]==15){
        tombola=false;
    }
    }
    
    if(tombola){
    cout<<"Estrarre il prossimo numero?";
    cin>>risp;
    }
    else{
        cout<<"GIOCO TERMINATO! "<<endl;
    }
    
    }while((risp=='s' || risp=='S') && tombola);
    
    
   return 0;
}

21 Risposte

  • Re: Gioco della Tombola

    Prova a mettere tabellone come array a tre dimensioni e a raggruppare in un for i pezzi di codice dove l'hai scritto "srotolato"

    Sei sicuro che sia tutto a posto? contarighe l'hai dichiarato da 18 e fai la inizializzazione a zero su 19 elementi (comunque non succede niente perché stai impostando a zero la variabile dopo, cioè contazeriG). L'inizializzazione a zero di un array la puoi fare con = {0};
    r e c non ha tanto senso dichiararle come variabili se poi il codice non funziona con valori differenti
  • Re: Gioco della Tombola

    Ciao, potresti spiegare nel dettaglio cosa intendi con gioco della tombola? Dedurlo dal codice richiede tempo e può generare fraintendimenti.
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    Prova a mettere tabellone come array a tre dimensioni e a raggruppare in un for i pezzi di codice dove l'hai scritto "srotolato"

    Sei sicuro che sia tutto a posto? contarighe l'hai dichiarato da 18 e fai la inizializzazione a zero su 19 elementi (comunque non succede niente perché stai impostando a zero la variabile dopo, cioè contazeriG). L'inizializzazione a zero di un array la puoi fare con = {0};
    r e c non ha tanto senso dichiararle come variabili se poi il codice non funziona con valori differenti
    Allora per quanto riguarda mettere il tabellone come array a tre dimensioni, non saprei lavorarci, le mie conoscenze ancora non si spingono oltre le matrici(e sto ancora a capirle tutt'ora), che poi mi sono sempre chiesto a cosa mai potessero servire gli arrey tridemensionali. Per quanto riguarda l'array da 18, è un errore mio, evidentemente avevo fatto la modifica della dimensione, e mi è sfuggito di cambiara nell'inizializzazione a 0.
  • Re: Gioco della Tombola

    Nippolo ha scritto:


    Ciao, potresti spiegare nel dettaglio cosa intendi con gioco della tombola? Dedurlo dal codice richiede tempo e può generare fraintendimenti.
    Ciao, errore mio, che non l'ho l'abitudine di commentare il codice. Ho creato un tabellone(diviso in 6) e una scheda per 1 giocatore. Da qui una funzione per estrarre una valore e cambiare il valore estratto in 0 sul tabellone e la scheda del giocatore. Poi con una serie di contatori conto gli zeri( 2 zeri ambo, 3 zeri terno ecc) poi se una parte di tabellone o il giocatore copre tutti i numeri con gli 0 ha fatto tombola e finisce il gioco.
  • Re: Gioco della Tombola

    cslash89 ha scritto:


    Weierstrass ha scritto:


    Prova a mettere tabellone come array a tre dimensioni e a raggruppare in un for i pezzi di codice dove l'hai scritto "srotolato"

    Sei sicuro che sia tutto a posto? contarighe l'hai dichiarato da 18 e fai la inizializzazione a zero su 19 elementi (comunque non succede niente perché stai impostando a zero la variabile dopo, cioè contazeriG). L'inizializzazione a zero di un array la puoi fare con = {0};
    r e c non ha tanto senso dichiararle come variabili se poi il codice non funziona con valori differenti
    Allora per quanto riguarda mettere il tabellone come array a tre dimensioni, non saprei lavorarci, le mie conoscenze ancora non si spingono oltre le matrici(e sto ancora a capirle tutt'ora), che poi mi sono sempre chiesto a cosa mai potessero servire gli arrey tridemensionali. Per quanto riguarda l'array da 18, è un errore mio, evidentemente avevo fatto la modifica della dimensione, e mi è sfuggito di cambiara nell'inizializzazione a 0.
    Vabbè ma non è tutta questa difficoltà: prova a riscrivere giusto la prima parte con tabellone[q][r][c] così ti risparmi il dover scrivere 1 2 3 4 5 6 ogni volta
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    cslash89 ha scritto:


    Weierstrass ha scritto:


    Prova a mettere tabellone come array a tre dimensioni e a raggruppare in un for i pezzi di codice dove l'hai scritto "srotolato"

    Sei sicuro che sia tutto a posto? contarighe l'hai dichiarato da 18 e fai la inizializzazione a zero su 19 elementi (comunque non succede niente perché stai impostando a zero la variabile dopo, cioè contazeriG). L'inizializzazione a zero di un array la puoi fare con = {0};
    r e c non ha tanto senso dichiararle come variabili se poi il codice non funziona con valori differenti
    Allora per quanto riguarda mettere il tabellone come array a tre dimensioni, non saprei lavorarci, le mie conoscenze ancora non si spingono oltre le matrici(e sto ancora a capirle tutt'ora), che poi mi sono sempre chiesto a cosa mai potessero servire gli arrey tridemensionali. Per quanto riguarda l'array da 18, è un errore mio, evidentemente avevo fatto la modifica della dimensione, e mi è sfuggito di cambiara nell'inizializzazione a 0.
    Vabbè ma non è tutta questa difficoltà: prova a riscrivere giusto la prima parte con tabellone[q][r][c] così ti risparmi il dover scrivere 1 2 3 4 5 6 ogni volta
    Ho fatto questa bozza di codice è giusta?
    
    for(int q=0; q<6; q++){
                for(int i=0; i<3; i++){
                    for(int j=0; j<5; j++){
                        cout<<tabellone[q][i][j]<<" ";
                    }
                    cout<<endl;
                }
            }
    
  • Re: Gioco della Tombola

    Hai una soluzione che funziona, giusto? Ora prova a fare un altro programma che faccia la stessa cosa ma scritto più compatto.
    Inizia tu con un main con solo l'inizializzazione e la stampa di tabellone tridimensionale e vedi se fa la stessa cosa di prima. Quando la ottieni, passi al prossimo step
  • Re: Gioco della Tombola

    cslash89 ha scritto:


    Ciao, errore mio, che non l'ho l'abitudine di commentare il codice. Ho creato un tabellone(diviso in 6) e una scheda per 1 giocatore. Da qui una funzione per estrarre una valore e cambiare il valore estratto in 0 sul tabellone e la scheda del giocatore. Poi con una serie di contatori conto gli zeri( 2 zeri ambo, 3 zeri terno ecc) poi se una parte di tabellone o il giocatore copre tutti i numeri con gli 0 ha fatto tombola e finisce il gioco.
    Perché dividi il tabellone in quel modo? Le 6 suddivisioni rappresentano le cartelle dell'avversario di giocatore1?

    Potresti anche implementare una generazione casuale delle cartelle dei giocatori. Inoltre nella visualizzazione potresti anche seguire quella che è l'impostazione delle classiche cartelle della tombola (nel senso che su ogni verticale sono presenti tutti numeri appartenenti alla stessa decina).

    I vari ambo, terno, quaterna e quintina non dovrebbero essere conteggiati solo la prima volta?

    Per migliorare un po' l'estetica, se lavori in ambiente windows, potresti anche colorare i numeri già usciti e ricorrere a
    system("CLS");
    per "pulire" la schermata della console ad ogni estrazione.

    Infine per simulare l'estrazione dei numeri dalla tombola, invece di generare un numero casuale e controllare se è già uscito, potresti semplicemente mischiare un array contenente i numeri da 1 a 90 per poi prelevarli nell'ordine.
  • Re: Gioco della Tombola

    @Nippolo

    Sono i sei riquadri del tabellone della tombola. Se non mi ricordo male, servono a far giocare anche chi estrae i numeri. Purtroppo quest'anno non ho avuto modo di rinfrescarmi la memoria
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    @Nippolo

    Sono i sei riquadri del tabellone della tombola. Se non mi ricordo male, servono a far giocare anche chi estrae i numeri. Purtroppo quest'anno non ho avuto modo di rinfrescarmi la memoria
    Si esatto, gioca anche chi estrae i numeri.
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    Sono i sei riquadri del tabellone della tombola. Se non mi ricordo male, servono a far giocare anche chi estrae i numeri.
    Effettivamente cercando "tabellone" in google immagini mi sembra abbastanza diffusa come cosa, ma sinceramente non ero a conoscenza di questa usanza. Qui da noi anche chi estrae ha le sue cartelle, per sapere se un numero è già uscito si chiede agli altri (o nel peggiore dei casi si passa a controllare tutti i numerini estratti finora), mentre il tabellone si utilizza per lo più per colmare qualche vuoto di memoria sulla smorfia!

    Weierstrass ha scritto:


    Purtroppo quest'anno non ho avuto modo di rinfrescarmi la memoria
    Eh già!
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    Hai una soluzione che funziona, giusto? Ora prova a fare un altro programma che faccia la stessa cosa ma scritto più compatto.
    Inizia tu con un main con solo l'inizializzazione e la stampa di tabellone tridimensionale e vedi se fa la stessa cosa di prima. Quando la ottieni, passi al prossimo step
    Prima di tutto ti ringrazio per il suggerimento della matrice tridimensionale, oggi ho imparato qualcosa di nuovo che sicurmante mi tornerà utile in futuro.

    Per quanto riguarda il codice aggiornato, funziona ma i contatori delle righe del tabellone non funzionano:
    
    #include <cstdlib>
    #include <iostream>
    #include <ctime>
    using namespace std;
    
    /*
     * 
     */
    int main(int argc, char** argv) {
        int r=3, c=5, estrazione[90];
        int contazeri=0, cont[5], contarighe[18];
        int contazeriG=0, contG[3], contarigheG[3];
        
        char risp;
        bool tombola=true;
        for(int i=0; i<5; i++){
            cont[i]=0;
        }
        for(int i=0; i<19; i++){
            contarighe[i]=0;
        }
        for(int i=0; i<3; i++){
            contarigheG[i]=0;
        }
        for(int i=0; i<3; i++){
            contG[i]=0;
        }
        int tabellone[6][r][c]={{{1, 2, 3, 4, 5}, {11, 12, 13, 14, 15}, {21, 22, 23, 24, 25}},
            {{6, 7, 8, 9, 10}, {16, 17, 18, 19, 20}, {26, 27, 28, 29, 30}},
            {{31, 32, 33, 34, 35}, {41, 42, 43, 44, 45}, {51, 52, 53, 54, 55}},
            {{36, 37, 38, 39, 40}, {46, 47, 48, 49, 50}, {56, 57, 58, 59, 60}},
            {{61, 62, 63, 64, 65}, {71, 72, 73, 74, 75}, {81, 82, 83, 84, 85}},
            {{66, 67, 68, 69, 70}, {76, 77, 78, 79, 80}, {86, 87, 88, 89, 90}}};
        
        int giocatore1[r][c]={{16, 21, 31, 42, 60}, {1, 18, 33, 53, 62},{2, 38, 55, 69, 74}};
        srand((unsigned) time(NULL));
        
        cout<<"TABELLONE"<<endl;
        for(int q=0; q<6; q++){
            for(int i=0; i<r; i++){
                for(int j=0; j<c; j++){
                    cout<<tabellone[q][i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        }
        
        cout<<"GIOCATORE 1"<<endl;
        for(int i=0; i<r; i++){
            for(int j=0; j<c; j++){
                cout<<giocatore1[i][j]<<" ";
            }
            cout<<endl;
        }
        
        cout<<endl<<endl;
        do{
        for(int i=0; i<80; i++){
            estrazione[i]=(rand()%90+1);
            for(int j=0; j<i; j++){
                if(estrazione[i]==estrazione[j]){
                    i--;
                    break;
                }
            }
        }
        
        for(int i=0; i<1; i++){
            cout<<"IL NUMERO ESTRATTO E': "<<estrazione[i]<<endl;
        }
        cout<<endl;
        for(int q=0; q<6; q++){
            for(int i=0; i<r; i++){
                for(int j=0; j<c; j++){
                    for(int e=0; e<1; e++){
                        if(tabellone[q][i][j]==estrazione[e]){
                            tabellone[q][i][j]=0;
                            contazeri++;
                            cont[q]++;
                        }
                        
                    }
                }
            }
        }
        cout<<endl;
        for(int i=0; i<r; i++){
            for(int j=0; j<c; j++){
                for(int e=0; e<1; e++){
                    if(giocatore1[i][j]==estrazione[e]){
                        giocatore1[i][j]=0;
                        contazeriG++;
                    }
                }
                
            }
        }
        cout<<"TABELLONE"<<endl;
        for(int q=0; q<6; q++){
            for(int i=0; i<r; i++){
                for(int j=0; j<c; j++){
                    cout<<tabellone[q][i][j]<<" ";
                }
                cout<<endl;
            }
            cout<<endl;
        }
        
        
        cout<<endl;
        cout<<"GIOCATORE 1"<<endl;
        for(int i=0; i<r; i++){
            for(int j=0; j<c; j++){
                cout<<giocatore1[i][j]<<" ";
            }
            cout<<endl;
        }
        cout<<endl;
    
       for(int i=0; i<18; i++){
            contarighe[i]=0;
        }
        for(int i=0; i<3; i++){
            contarigheG[i]=0;
        }
        //questa funzione non va
        for(int q=0; q<18; q++){
            for(int j=0; j<c; j++){
                if(tabellone[q][j]==0){
                    contarighe[q]++; //contarighe serve a contare gli zeri su ogni riga in modo da decretare se il tabellone ha fatto ambo ecc
                }
            }
        }
        //questa invece si
        for(int q=0; q<3; q++){
            for(int j=0; j<c; j++){
                if(giocatore1[q][j]==0){
                    contarigheG[q]++;
                }
            }
        }
            for(int i=0; i<18; i++){
               
                if(contarighe[i]==2){
                    cout<<"AMBO!"<<endl;
                }
               
                if(contarighe[i]==3){
                    
                    cout<<"TERNO!"<<endl;
                 }
                if(contarighe[i]==4){
                    cout<<"QUATERNA"<<endl;
                }
                if(contarighe[i]==5){
                    cout<<"CINQUINA!"<<endl;
                }
            }
        for(int i=0; i<6; i++){
            if(cont[i]==15){
                cout<<"TOMBOLA! "<<endl;
            }
        }
                
                for(int i=0; i<3; i++){
                   
                    if(contarigheG[i]==2){
                        cout<<"Il giocatore 1 ha fatto Ambo! "<<endl;
                        
                    }
                    else if(contarigheG[i]==3){
                        
                        cout<<"Il giocatore 1 ha fatto Terno! "<<endl;
                        break;
                    }
                    else if(contarigheG[i]==4){
                        cout<<"Il giocatore 1 ha fatto Quaterna! "<<endl;
                    }
                    else if(contarigheG[i]==5){
                        cout<<"Il giocatore 1 ha fatto Cinquina! "<<endl;
                        break;
                    }
                    if(contazeriG==15){
                        cout<<"Il giocatore 1 ha fatto TOMBOLA! "<<endl;
                    }
                }
        
        for(int i=0; i<6; i++){
            cout<<"zeri matrice "<<i+1<<": "<<cont[i]<<endl;
        }  
        /*for(int i=0; i<3; i++){
            cout<<"zeri Giocatore 1: "<<i+1<<" "<<contG[i]<<" "<<endl;
        }*/
        
        cout<<"Numeri usciti: "<<contazeri<<endl;
        cout<<"zeri giocatore 1: "<<contazeriG<<endl;
        for(int i=0; i<18; i++){
            cout<<contarighe[i]<<" ";
        }
        cout<<endl;
        for(int i=0; i<3; i++){
            cout<<contarigheG[i]<<" ";
        }
        cout<<endl;
       
        for(int i=0; i<6; i++){
        if(cont[i]==15){
            tombola=false;
        }
        }
        for(int i=0; i<3; i++){
        if(contG[i]==15){
            tombola=false;
        }
        }
        
        if(tombola){
        cout<<"Estrarre il prossimo numero?";
        cin>>risp;
        }
        else{
            cout<<"GIOCO TERMINATO! "<<endl;
        }
        
        }while((risp=='s' || risp=='S') && tombola);
        
        
       return 0;
    }
    
    
  • Re: Gioco della Tombola

    Nippolo ha scritto:


    cslash89 ha scritto:


    Ciao, errore mio, che non l'ho l'abitudine di commentare il codice. Ho creato un tabellone(diviso in 6) e una scheda per 1 giocatore. Da qui una funzione per estrarre una valore e cambiare il valore estratto in 0 sul tabellone e la scheda del giocatore. Poi con una serie di contatori conto gli zeri( 2 zeri ambo, 3 zeri terno ecc) poi se una parte di tabellone o il giocatore copre tutti i numeri con gli 0 ha fatto tombola e finisce il gioco.
    Perché dividi il tabellone in quel modo? Le 6 suddivisioni rappresentano le cartelle dell'avversario di giocatore1?

    Potresti anche implementare una generazione casuale delle cartelle dei giocatori. Inoltre nella visualizzazione potresti anche seguire quella che è l'impostazione delle classiche cartelle della tombola (nel senso che su ogni verticale sono presenti tutti numeri appartenenti alla stessa decina).

    I vari ambo, terno, quaterna e quintina non dovrebbero essere conteggiati solo la prima volta?

    Per migliorare un po' l'estetica, se lavori in ambiente windows, potresti anche colorare i numeri già usciti e ricorrere a
    system("CLS");
    per "pulire" la schermata della console ad ogni estrazione.

    Infine per simulare l'estrazione dei numeri dalla tombola, invece di generare un numero casuale e controllare se è già uscito, potresti semplicemente mischiare un array contenente i numeri da 1 a 90 per poi prelevarli nell'ordine.
    Questa funzione system("CLS") è interessante, volevo già chiedere come si puliva lo schermo. In che punto del codice si applica questa funzione?
  • Re: Gioco della Tombola

    
    //questa funzione non va
        for(int q=0; q<18; q++){
            for(int j=0; j<c; j++){
                if(tabellone[q][j]==0){
                    contarighe[q]++; //contarighe serve a contare gli zeri su ogni riga in modo da decretare se il tabellone ha fatto ambo ecc
                }
            }
        }
    
    
        for(int q=0; q<18; q++){
            for(int j=0; j<c; j++){
                if(tabellone[q/3][q%3][j]==0){
                    contarighe[q]++; //contarighe serve a contare gli zeri su ogni riga in modo da decretare se il tabellone ha fatto ambo ecc
                }
            }
        }
    
Devi accedere o registrarti per scrivere nel forum
21 risposte