Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7

    [C++] Gioco Della Tombola

    Ciao a tutti!

    Ho un problema, sto facendo il gioco della tombola, ma mi sono bloccato...Ora vi spiego:

    Ho costruito il tabellone con una matrice contendente i 90 numeri, ho generato a random i numeri da estrarre e li ho salvati in un vettore. Il problema è che non riesco a evidenziare i numeri che ho caricato nel vettore e contemporaneamente lasciare bianchi i numeri non ancora estratti...

    Sapete come darmi una mano??

    Grazie mille per eventuali rispote!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C++] Gioco Della Tombola

    Originariamente inviato da Miki18
    ... Il problema è che non riesco a evidenziare i numeri che ho caricato nel vettore e contemporaneamente lasciare bianchi i numeri non ancora estratti...
    Cioè ?

    Sapete come darmi una mano??
    Dovresti postare e spiegarci il codice già scritto e spiegare meglio quello che non sai scrivere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7

    Re: Re: [C++] Gioco Della Tombola

    Originariamente inviato da oregon
    Cioè ?



    Dovresti postare e spiegarci il codice già scritto e spiegare meglio quello che non sai scrivere ...
    Si hai ragione ho spiegato male
    Allora, dovrei stampare il tabellone colorando (uno alla volta) i numeri che ho caricato nel vettore(che sono 90). Oppure sostituire i numeri dellla matrice con quelli colorati del vettore.

    In poche parole il risultato dovrebbe essere questo, solo che a scuola non ho mai usato molte di queste istruzioni:
    http://forum.html.it/forum/showthrea...hlight=Tombola

    Io per il momento ho fatto questo (stavo provando a modificare delle cose ma sono bloccato):
    Codice PHP:
    #include <iostream.h>
    #include <time.h>
    #include <windows.h>
    #include <stdlib.h> 
    #include <conio.h>

    int main()
       {
           
    //serve per i colori (anche la libreria di windows)
           
    HANDLE hConsole;
           
    hConsole GetStdHandle(STD_OUTPUT_HANDLE);
               
            
    int mat[9][10], ijkaux=1aux1=11aux2=2auxkaux3;
            
    int vett[89];
            
    bool flag=false;
            
    cout<<"             +------------------+ "<<endl;
            
    cout<<"             |    La Tombola    |"<<endl;
            
    cout<<"             +------------------+ "<<endl;
            
    cout<<"\n---------------------------------------------\n";
            
    cout<<endl;
            
            
    srand(time(NULL));
            
    //stampo il tabellone
            
    for(i=0i<9i++)
               {
                for(
    j=0j<10j++)
                   {
                     
    mat[i][j]=aux;
                     
    aux++;
                   }
               }        
            
    aux=16;
            for(
    i=0i<9i++)
               {
                for(
    j=0j<10j++)
                   {
                     if (
    mat[i][j]>0&&mat[i][j]<10 && mat[i][j]!=6)
                        
    cout<<" ";
                     if (
    mat[i][j]==6)
                         
    cout<<"  |     ";
                        if (
    mat[i][j]==aux)
                           {
                            
    cout<<"  |    ";
                            
    aux=aux+10;
                           }
                     if  (
    mat[i][j]==aux1)
                        {
                          
                          
    aux1=aux1+10;       
                          
    cout<<endl;         
                        }
                     
    cout<<mat[i][j]<<"  ";
                     
                   }
                   if (
    i==aux2)
                      {
                       
    cout<<endl;
                       
    cout<<"\n---------------------------------------------\n";
                       
    aux2=aux2+3;
                      }
               }
               
         
    //genero numeri random, per l'estratione e li metto in un vettore
         
    for(i=0;i<90;i++)
           {
            
    flag=false;
            
    aux=(rand()%90+1);
            for(
    j=0;j<i&&i!=0;j++)
              {
               if (
    vett[j]==aux)
                   
    flag=true;
              }
            if(
    flag==false)
              
    vett[i]=aux;
            else
              
    i--;
           }
           
    //stampo vettore contenente i numeri random *****Provvisorio*****
           
    cout<<"Il vettore e:"<<endl;
           for(
    i=0;i<90;i++)
           
    cout<<" " <<vett[i];
           
    //faccio scomparire dal tabellone i numerì estratti
          
    system ("PAUSE");
          
         for(
    k=0k<90;k++)
           {
            
    aux1=11;
            
    aux2=2;
            
    aux=16;
         
            for(
    i=0i<9i++)
               {
                for(
    j=0j<10j++)
                   {
                     if (
    mat[i][j]>0&&mat[i][j]<10 && mat[i][j]!=6)
                        
    cout<<" ";
                     if (
    mat[i][j]==6)
                         
    cout<<"  |     ";
                        if (
    mat[i][j]==aux)
                           {
                            
    cout<<"  |    ";
                            
    aux=aux+10;
                           }
                     if  (
    mat[i][j]==aux1)
                        {
                          
                          
    aux1=aux1+10;       
                          
    cout<<endl;         
                        }
                     
                       if(
    mat[i][j]==vett[k])
                         {
                          
    mat[i][j]=0;
                          
    cout<<mat[i][j]<<"  ";
                         }
                       else 
                          
    cout<<mat[i][j]<<"  ";
                                          
                   }
                    if (
    i==aux2)
                      {
                       
    cout<<endl;
                       
    cout<<"\n---------------------------------------------\n";
                       
    aux2=aux2+3;
                      }
               }
               
    system("PAUSE");
           }
               
         
    system ("PAUSE");
         return 
    0;      
       } 

  4. #4
    Una piccola curiosità. Leggendo il codice ho notato questo:

    Codice PHP:
         for(i=0;i<90;i++) 
           { 
            
    flag=false
            
    aux=(rand()%90+1); 
            for(
    j=0;j<i&&i!=0;j++) 
              { 
               if (
    vett[j]==aux
                   
    flag=true
              } 
            if(
    flag==false
              
    vett[i]=aux
            else 
              
    i--; 
           } 
    Se non ho capito male, tu generi un valore random e se questo non è già presente nel vettore, lo aggiungi, giusto?
    Se si, sprechi molto tempo. Teoricamente, il tuo programma potrebbe andare in loop all'infinito. Ti basta caricare il vettore con i numeri da 1 a 90 e poi mischiarlo:

    Codice PHP:
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    int main()
    {
        
    int numbers[90];
        const 
    int swaps 200;
        
        
    // CARICO
        
    for(int i 1<= 90i++)
            
    numbers[i-1] = i;
            
        
    // MISCHIO
        
    srand((unsigned int)time(NULL));
        for(
    int i 0swapsi++)
        {
            
    int i = (rand() % 90);
            
    int j = (rand() % 90);        
            
    swap(numbers[i], numbers[j]);
        }
        
        
    // STAMPA
        
    for(int i 090i++)
            
    cout << numbers[i] << " | ";
        
    cout << endl;


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7
    Originariamente inviato da antotan
    Una piccola curiosità. Leggendo il codice ho notato questo:

    Se non ho capito male, tu generi un valore random e se questo non è già presente nel vettore, lo aggiungi, giusto?
    Se si, sprechi molto tempo. Teoricamente, il tuo programma potrebbe andare in loop all'infinito. Ti basta caricare il vettore con i numeri da 1 a 90 e poi mischiarlo:

    Grazie, ho imparato una cosa nuova!

  6. #6
    Antonan 6 un mito :-)

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7
    COmunque il mio problema iniziale non è ancora stato risolto

  8. #8
    Originariamente inviato da theboss280489
    Antonan 6 un mito :-)
    eheh magari

    Allora, dovrei stampare il tabellone colorando (uno alla volta) i numeri che ho caricato nel vettore(che sono 90). Oppure sostituire i numeri dellla matrice con quelli colorati del vettore.
    Non so se ho capito bene ma in pratica tu vuoi fare questo

    codice:
    - crea matrice 9X10 che rappresenta il tabellone
    - crea vettore dei numeri da estrarre
    
    do 
      estrai prossimo numero dal vettore
      stampa il tabellone colorando tutti i numeri estratti
    while(estratti < 90)
    Ad esempio, stampi il tabellone, poi estrai il 9 (che è il primo elemento di quelli casuali generati) e stampi il tabellone, colorando il 9 in rosso (ad esempio).
    Giusto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    7
    Originariamente inviato da antotan
    eheh magari



    Non so se ho capito bene ma in pratica tu vuoi fare questo

    codice:
    - crea matrice 9X10 che rappresenta il tabellone
    - crea vettore dei numeri da estrarre
    
    do 
      estrai prossimo numero dal vettore
      stampa il tabellone colorando tutti i numeri estratti
    while(estratti < 90)
    Ad esempio, stampi il tabellone, poi estrai il 9 (che è il primo elemento di quelli casuali generati) e stampi il tabellone, colorando il 9 in rosso (ad esempio).
    Giusto?
    Proprio così!
    È possibile farlo??

  10. #10
    Certo, devi solo rivedere la logica del tuo programma.
    Se sai usare le struct, puoi creare una struct Num così:

    Codice PHP:
    struct Num
    {
        
    int n;
        
    bool flag;
    }; 
    Il flag indica se un numero è stato estratto o meno.
    Al posto di

    codice:
    int table[9][10]
    avrai

    codice:
    Num table[9][10]
    Quando carichi il tabellone farai:

    codice:
    	int counter = 1;
    	for(int i = 0; i < 9; i++)
    	{
    		for(int j = 0; j < 10; j++)
    		{
    			table[i][j].n = counter++;
    			table[j].flag = false;
    		}
    	}
    


    settando i numeri e dicendo che ancora non sono estratti (ovvio, lo stati caricando).
    Poi farai un ciclo per estrarre i 90 numeri dal vettore numbers (quello mischiato casualmente).

    Codice PHP:
        counter 0;
        do {
            
    system("cls");        
            
            
    int number numbers[counter++];
            
    cout << "Estraggo il numero... " << number << endl << endl;  
            
            for(
    int i 09i++)
            {
                for(
    int j 010j++)
                {
                    if(
    table[i][j].== number)
                    {
                        
    table[i][j].flag true;
                        break;
                    }
                }
            }    
            
            
    printTable(tablehConsole);
            
            
    cin.get();        
        } while(
    counter 90); 
    Settando il flag a true, indicherai che il numero è stato estratto.
    La funzione printTable ha la seguente forma:

    Codice PHP:
    void printTable(Num table[9][10], HANDLEhConsole)
    {
        for(
    int i 09i++)
        {
            for(
    int j 010j++)
            {
                if(
    table[i][j].10)
                    
    cout << " ";
                
                if(
    table[i][j].flag)
                    
    SetConsoleTextAttribute(hConsole2);                            
                    
                
    cout << table[i][j].<< "  ";
                
    SetConsoleTextAttribute(hConsole15);
            
                if( (
    table[i][j].== 0) && (table[i][j].10 != 0) )
                    
    cout << "  |    ";                            
                else if(
    table[i][j].10 == 0)
                    
    cout << endl;
                
                if(
    table[i][j].30 == 0)
                {
                    
    cout << endl;
                    for(
    int k 045k++, cout << "-");
                    
    cout << endl;                
                }
            }
        }    

    SetConsoleTextAttribute(hConsole, 2); vuol dire colorare di verde,
    SetConsoleTextAttribute(hConsole, 15); vuol dire colorare di bianco.
    Nota che colori di verde solo se il flag è settato a true.
    Mi sono permesso di modificare la stampa della tabella. Infatti non hai bisogno di variabili ausiliarie (le tue aux).
    Se il numero è divisibile per 30 (30, 60, 90) stampi la linea di trattini.
    Se il numero è divisibile per 5 ma non per 10 (5, 15....) stampi gli spazi, la barra e altri spazi.
    Se il numero è divisibile per 10, stampi la newline.

    Tutto assieme:

    Codice PHP:
    #include <iostream>
    #include <windows.h> 

    using namespace std;

    struct Num
    {
        
    int n;
        
    bool flag;
    };

    void printTable(Num table[9][10], HANDLEhConsole)
    {
        for(
    int i 09i++)
        {
            for(
    int j 010j++)
            {
                if(
    table[i][j].10)
                    
    cout << " ";
                
                if(
    table[i][j].flag)
                    
    SetConsoleTextAttribute(hConsole2);                            
                    
                
    cout << table[i][j].<< "  ";
                
    SetConsoleTextAttribute(hConsole15);
            
                if( (
    table[i][j].== 0) && (table[i][j].10 != 0) )
                    
    cout << "  |    ";                            
                else if(
    table[i][j].10 == 0)
                    
    cout << endl;
                
                if(
    table[i][j].30 == 0)
                {
                    
    cout << endl;
                    for(
    int k 045k++, cout << "-");
                    
    cout << endl;                
                }
            }
        }    
    }

    int main()
    {
        
    HANDLE hConsole GetStdHandle(STD_OUTPUT_HANDLE);    
        
        
    Num table[9][10];
        
    int numbers[90]; 
        const 
    int swaps 200
        
    int counter;
         
        
    // CARICO 
        
    for(int i 1<= 90i++) 
            
    numbers[i-1] = i
             
        
    // MISCHIO 
        
    srand((unsigned int)time(NULL)); 
        for(
    int i 0swapsi++) 
        { 
            
    int i = (rand() % 90); 
            
    int j = (rand() % 90);         
            
    swap(numbers[i], numbers[j]); 
        }
        
        
    // CREO IL TABELLONE
        
    counter 1;
        for(
    int i 09i++)
        {
            for(
    int j 010j++)
            {
                
    table[i][j].counter++;
                
    table[i][j].flag false;
            }
        }
        
        
    system("cls");
        
    printTable(tablehConsole);
        
        
    counter 0;
        do {
            
    system("cls");        
            
            
    int number numbers[counter++];
            
    cout << "Estraggo il numero... " << number << endl << endl;  
            
            for(
    int i 09i++)
            {
                for(
    int j 010j++)
                {
                    if(
    table[i][j].== number)
                    {
                        
    table[i][j].flag true;
                        break;
                    }
                }
            }    
            
            
    printTable(tablehConsole);
            
            
    cin.get();        
        } while(
    counter 90);


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 © 2025 vBulletin Solutions, Inc. All rights reserved.