Gioco della Tombola

di il
21 risposte

21 Risposte - Pagina 2

  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    
        
                if(tabellone[q/3][q%3][j]==0){
                    
    
    Qua sono rimasto affascinato! Premesso che funziona, mi puoi spiegare brevemente questa istruzione?
  • Re: Gioco della Tombola

    Potevi dichiarare contarighe come array [ a ][ b ], con a = 6 e b = 3, e usare due indici.
    Dato che hai usato un array monodimensionale[a*b], per avere un indice solo q che percorre tutti gli a*b valori, devi usare divisione e resto, cioè [q/b][q%b]
  • Re: Gioco della Tombola

    Weierstrass ha scritto:


    Potevi dichiarare contarighe come array [ a ][ b ], con a = 6 e b = 3, e usare due indici.
    Dato che hai usato un array monodimensionale[a*b], per avere un indice solo q che percorre tutti gli a*b valori, devi usare divisione e resto, cioè [q/b][q%b]
    Una curiosiatà.... io non ci sarei mai arrivato da solo, per iniziare anche io a ragionare meglio sulle cose, che poi è la mia pecca in programmazione, ovvero con la semantica del linguaggio me la cavo piuttosto bene, quando si tratta di ragionare su qualche algoritmo vado nel pallone. Come posso migliorare da questo punto di vista? C'è qualche libro che si sofferma più sul ragionamento? I libri che uso io o che comunque si trovano in rete, ad esempio con gli array oltre il max, min, media, stampa al contrario non vanno, ma quando vado a vedere gli esercizi a volte non so dove mettere mano. Non capisco se sono limitato io(sicuramente lo sono) oppure effettivamente sono i libri che spiegano meno di quello che mettono negli esercizi.
  • Re: Gioco della Tombola

    In realtà hai già fatto la cosa corretta: prova a scrivere un programma che risolve un problema reale e complesso (la tombola in questo caso). Quando ti blocchi su un punto cerca su internet come si fa a fare una determinata cosa in particolare, altrimenti chiedi su un forum. Come vedi le cose che servono vengono fuori e piano piano le impari.
  • Re: Gioco della Tombola

    Tornando al gioco della Tombola, stavo sistemando l'estrazione dei numeri, in quanto prima era fatta male, mettendo la funzione di estrazione all'interno del DO ogni volta andavo a genererare di nuovo i numeri andado a prendere in considerazione solo il numero all'interno dell'indice 0, quindi così facendo ottenevo un estrazione con ripetizione. Avrei potuto anche lasciarla così tanto il suo lavoro lo faceva ugualmente, ma preferisco correggere.

    Dunque ho tolto la funzione di estrazione dal DO in modo da estrarre solo i numeri 1 volta e basta e avanzare l'indice ogni volta che si chiede una nuova estrazione.

    Però così facendo mi sballa tutti i conteggi.
    
     for(int i=0; i<90; i++){
            estrazione[i]=(rand()%90+1);
            for(int j=0; j<i; j++){
                if(estrazione[i]==estrazione[j]){
                    i--;
                    break;
                }
            }
        }
       /* for(int j=0; j<90; j++){
            cout<<estrazione[j]<<" ";
        }*/
        cout<<endl;
        int u=0;
        
        do{
            
            cout<<"IL NUMERO ESTRATTO E': "<<estrazione[u]<<endl;
           
        
        cout<<endl;
       //questa funzione mi cancella i numeri estratti, ma sballa i conteggi dei numeri estratti (contazeri) e contarighe.
        for(int q=0; q<6; q++){
             
            for(int i=0; i<r; i++){
                 
                for(int j=0; j<c; j++){
                    
                        if(tabellone[q][i][j]==estrazione[u]){
                            tabellone[q][i][j]=0;
                            contazeri++;
                            cont[q]++;
                            u++;
                           
                        }
                      
                    
                }
            }
        }
        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;
        }
        for(int q=0; q<18; q++){
            for(int j=0; j<c; j++){
                if(tabellone[q/3][q%3][j]==0){
                    contarighe[q]++;
                }
            }
        }
        
        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

    Non ho capito bene quale sia il problema e al momento non ho tempo di guardarmi tutto il codice, ma volevo rinnovare il consiglio che ti ho dato in precedenza:

    Nippolo ha scritto:


    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 ha scritto:


    Non ho capito bene quale sia il problema e al momento non ho tempo di guardarmi tutto il codice, ma volevo rinnovare il consiglio che ti ho dato in precedenza:

    Nippolo ha scritto:


    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.
    É quello che sto tentando di fare Solo che ora ho un problema di conteggio.
Devi accedere o registrarti per scrivere nel forum
21 risposte