Gioco affari tuoi

di il
14 risposte

Gioco affari tuoi

Salve ragazzi,sto costruendo in linguaggio c il gioco affari tuoi ma ho dei problemi nell'utilizzare i pacchi con contenuto una stringa descrittiva e non un intero...qualcuno può darmi una mano???magari in privato potrei farvi vedere il codice da me realizzato

14 Risposte

  • Re: Gioco affari tuoi

    Perchè proprio in privato???
    non riesci a postarlo qui???

    se ti serve io questo tipo di programma-gioco l'ho già realizzato un paio di anni fa...sia in c++ che in visual basic
  • Re: Gioco affari tuoi

    Ma l'hai fatto solo con interi o anche con stringhe???comunque se mi puoi essere d'aiuto te lo posto qua
  • Re: Gioco affari tuoi

    Qualcuno mi può aiutare???
  • Re: Gioco affari tuoi

    Io non conosco il gioco ma un aiuto sono disposto a dartelo sulla programmazione.
    Esponi il problema in questo argomento ed allega il pezzo di codice che non capisci e/o ha errori.

    Saluti,
    Max
  • Re: Gioco affari tuoi

    Allora io devo far si che di 20 "pacchi",chiamiamoli cosi,15 abbiano dei valori interi ed altri 5 dei valori string(contengano una parola).man mano che si estrae un pacco,il contenuto di esso deve essere eliminato dalla lista che si andrà a stampare dopo ogni chiamata...ci siamo più o meno???
  • Re: Gioco affari tuoi

    Capito. Dov'è il problema?
  • Re: Gioco affari tuoi

    Il problema è che non riesco a creare una struttura che mi permetta di avere pacchi di tipo int e di tipo char e riuscire poi ad eliminarli dalla lista che si andrà a stampare dopo ogni chiamata.se vuoi in privato ti invio il codice che ho creato finora.oppure se hai messenger ci scambiamo il contatto cosi è tutto più veloce
  • Re: Gioco affari tuoi

    No, ti rispondo dal forum perchè può essere utile a qualcun'altro.

    Mi serve vedere com'è la struct. Poi ti spiego come devi fare...
    Postala usando il tag 'code'

    ~Max~
  • Re: Gioco affari tuoi

    #include<stdlib.h>
    #include<stdio.h>
    #include<iostream>
    #include<ctime>
    
    using namespace std;
    
    
    int Gioca(char nome[], int pacco);       
    int offerta(char nome[], int pacco);                   
    int Apertura_Pacco();                             
    int Fine();                            
    
    
    char nome[20];
    int pacco,fare_offerta= 0;
                        
    int pacchi_rimanenti[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
    
    
    int contenuto_pacco[]={1,5,10,100,250,1000,2500,5000,10000,20000,50000,75000,100000,250000,500000};                
    char a[5][50]={"ssssss","nnnnnnnnn","tttttttttt","uuuuuuu","jjjjjj"};
    
    
    
    
    int k;
    int main () {
        system("color 34");
        srand(time(NULL));
        int scelta;
         printf("\t\t****************************************************\n");
       printf("\t\t*                                                  *\n");  
       printf("\t\t*            Benvenuti ad AFFARI TUOI              *\n");
       printf("\t\t*                                                  *\n"); 
       printf("\t\t****************************************************\n\n"); 
        printf( "1 - Gioca\n\n2 - Esci\n\n");
        scanf("%d",&scelta);
        do {
        switch (scelta) {
               case 1:
                    system("cls");
                    printf( "\n\nInserisci il tuo nome: ");
                    scanf("%S",&nome);
                    while (pacco < 1 || pacco > 20)
                    {
                    printf( "\n\nInserisci il numero del pacco che vuoi(1-20): ");
                    scanf("%d",&pacco);
                    }
                    Gioca(nome,pacco);
                    
                    break;
               case 2:
                    exit (1);
                    }
               }
               while (scelta < 1 || scelta > 3);
    }
    
    int Gioca(char nome[], int pacco) {
        Fine();
        if (fare_offerta==6 || fare_offerta==9 || fare_offerta==12 || fare_offerta==15 || fare_offerta==18) {
        offerta(nome, pacco);
        }
        int chiama;        
        system("cls");
        printf( "Pacchi rimasti: ");
        for (int x = 0; x < 20; x++) {          
            if (pacchi_rimanenti[x]!=pacchi_rimanenti[pacco-1] && pacchi_rimanenti[x]!=0) {
            printf("%d ",pacchi_rimanenti[x]);
                 }
            else {
                 printf( "  ");
                 }
            }
            printf("\n");
        for (int y = 0; y < 15; y++) {          
            if (contenuto_pacco[y]!=0) {
            printf("\n %d",contenuto_pacco[y]);
                 }
            
            }
            printf("\n");
            for (int y = 0; y < 5; y++){
             
            printf(" %s\n",a[y]);
            }
            printf( "\n\n\n");
            printf( "Quale pacco vuoi chiamare? ");
            scanf("%d",&chiama);
            if (pacchi_rimanenti[chiama-1]!=0) {
            Apertura_Pacco();
            pacchi_rimanenti[chiama-1]=0;
            fare_offerta++;
            }
            else
            {
            printf( "\n\n\nHai gia' chiamato quel pacco!!!");
         
            Gioca(nome,pacco);
            }
            Gioca(nome, pacco);
    
    }
    
    int offerta(char nome[], int pacco) {
        int scelta=10;
        int tot_pacchi_rimasti=0;                 
        int valore_pacchi_rimasti=0;            
        int off;
        for (int x=0; x < 20; x++) {
            if (contenuto_pacco[x]!=0) {
            valore_pacchi_rimasti += contenuto_pacco[x];
            }
            else {
                 tot_pacchi_rimasti++;
                 }
        }
        system("cls");
        off = ((valore_pacchi_rimasti / tot_pacchi_rimasti) / 3);
        if (off > 30000 && fare_offerta==6) {
                off -= rand() % 20000;
                }    
        else if (off > 30000) {
                off -= rand() % 7500;
                }
        else if (off > 15000) {
                off -= rand() % 5000;
                }
        else if (off > 10000) {
             off -= rand() % 2500;
             }
        printf( "%s , per te l'offerta e': %d ",nome,off);
        for (int y = 0; y < 20; y++) {          
            if (contenuto_pacco[y]!=0) {
            printf("\n%d",contenuto_pacco[y]);
                 }
            else {
                 printf("\n");
                 }
            }
        printf("\n");
        printf( "\nAccetti l'offerta? (1)-(SI) - (0)-(NO)\n");
        while (scelta > 1 || scelta < 0)
        scanf("%d",&scelta);
        if (scelta==1) {
                       system("cls");
                       printf( "Hai vinto: %d",off);
                       printf("\n");
                       system("Pause");
                       exit (1);
                       }
    }    
    
    int Apertura_Pacco() {
        int PcVal,pcnm;
        system("cls");
        printf( "Il valore del pacco e': ");
        
        
        
            while (contenuto_pacco[PcVal]==0) {
                  PcVal = rand() % 15;
                  PcVal = rand() % 15;
                  
                  }
        printf("%d",contenuto_pacco[PcVal]);
        printf("Euro!!!");
        contenuto_pacco[PcVal] = 0;
    }
    
    int Fine() {
        int TotWn;     
        if (fare_offerta==19){
                       system("cls");
        for (int y = 0; y < 20; y++) {          
            if (contenuto_pacco[y]!=0) {
            TotWn = contenuto_pacco[y];
                 }
            }
                       printf( "Hai vinto: %d",TotWn);
                       printf("Euro!!!\n\n\n");
                       system("Pause");
                       exit (1);
                       }
    } 
    
  • Re: Gioco affari tuoi

    Bhe, non hai usato delle struct list ma dei normali array...

    Per cui, immagino tu debba legare l'array char a con l'array int contenuto_pacco.

    Se e' così puoi semplicemente, senza stravolgere il tutto, dichiarare contenuto_pacco
    come array di puntatori, dove anche i tuoi valori sono stringhe...

    Confermami
  • Re: Gioco affari tuoi

    Ma su quei valori devo compiere delle operazioni matematiche per quello è un array di interi
  • Re: Gioco affari tuoi

    Basta usare atoi:
    
        ...
        i=atoi(pacco[n-1]);
        if (i)
        {
          printf ("valore =%d\n",i);
          GranTotalone+=i;         //<---------qui puoi sommare il valore
        }
        else
          printf ("descrizione =%s\n",pacco[n-1]);
        ...
    
  • Re: Gioco affari tuoi

    Dove devo inserirla questa porzione di codice?
  • Re: Gioco affari tuoi

    Il pezzo di codice e' un esempio di applicazione di atoi...
    Più che un dove mettere il codice, avrei gradito un "sì potrebbe andare bene!" o "noooo è un casino!"

    Comunque il codice che mi hai dato è veramente un casino... nel senso che è scritto un pò male e le modifiche in questi casi sono disastrose.
    
        ...
    // Inizializzazione 
    char contenuto_pacco[20][20]={"1","5","10","100","250","1000","2500","5000","10000","20000","50000","75000","100000",
                           "250000","500000","aaaaaaa","bbbbbbbb","ccccccccc","dddddddddd","eeeeeeeeeee"};
        ...
    
    funzione utile a restituire il valore dall'elemento dell'array
    
        ...
    int valore_contenuto_pacco (int n)
    {
      int i;
      i=atoi (contenuto_pacco[n]);
      
      return i;
    }
        ...
    
    Nella funzione Gioca: nella parte dove visualizzi i due array
    
        ...
        for (int y = 0; y < 20; y++) 
        {         
            if (contenuto_pacco[y][0]!='\0')
              printf("%s\n",contenuto_pacco[y]);
        }
        ...
    
    Nella funzione Offerta: dove addizioni valore_pacchi_rimasti
    
        ...
        for (int x=0; x < 20; x++) 
       {
            if (valore_contenuto_pacco (x))
            {
              valore_pacchi_rimasti+=valore_contenuto_pacco (x);
            }
            else 
                 tot_pacchi_rimasti++;
        }
        ...
    
    Sempre nella funzione Offerta: dove rivisualizzi
    
        ...
        for (int y = 0; y < 20; y++)
             printf ("%s\n",contenuto_pacco[y]);
        ...
    
    Nella funzione Apertura_pacco: rnd modulo 20 non 15
    
        ...
        do
        {
            PcVal = rand() % 20;
        }while (*(contenuto_pacco[PcVal])!='\0');
        ...
       printf("%d Euro\n",valore_contenuto_pacco(PcVal));
       *(contenuto_pacco[PcVal])='\0';
        ...
        ...
    
    Per il resto può essermi sfuggito qualcosa. A te l'arduo compito di compilarlo e debuggarlo

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
14 risposte