Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Aiuto programma che non parte (0 errori e avvisi)

    Devo creare un programma che simuli una fase del monopoli con 6 giocatori che hanno 100 euro ciascuno e in maniera casuale devo assegnare 19 terreni (ogni giocatore non ne può avere più di 4). Il gioco consiste solo nel lanciare i dadi, vedere se il giocatore è finito in un terreno avversario e ipoteticamente pagare al propretario il costo. Mi potete dire perche parte ma non fa nulla? Non ritorna neanche a zero, secondo me il problema è il primo for che genera numeri pseudocasuali non ripetuti perchè se lo tolgo e metto manualmente i terreni il programma parte e funziona.

    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #define false 0
    #define true 1
    int f_dadi();

    int main()
    {   
    int i,j,dadi,z,a;
        
    struct {
        
    char *nome;
        
    int soldi;
        
    int posizione;
        
    int casa[4];
        }
    personaggio[6];
        
    personaggio[0].nome="Macchina";
        
    personaggio[1].nome="Cappello";
        
    personaggio[2].nome="Nave";
        
    personaggio[3].nome="Scarpa";
        
    personaggio[4].nome="Cariola";
        
    personaggio[5].nome="Cane";
        for (
    i=0;i<6;i++)
            {
    personaggio[i].soldi=100;
            
    personaggio[i].posizione=0;}
        
    int terreno[20]={0,2,2,2,5,4,4,3,1,1,5,6,6,6,5,4,4,3,1,1}; 

    /*B','G','G','G','R','V','V','N','A','A','R','F','F','F','R','V','V','N','A','A';*/

        
    int array[18];
        
    int ok;

        for (
    i=0i<19i++){
                    
    srand(time(NULL));
                    
    ok false;
        while(!
    ok){

                array[
    i] = 1+rand()%18;
        
    ok true;
        for(
    j=0j<ij++){
                if(array[
    i] == array[j])
                    
    ok false;}
                    }
         }

         for(
    i=0;i<6;i++)
            for(
    j=0;j<3;j++)
               for(
    z=0;z<18;z++)
                  
    personaggio[i].casa[j]=array[z];
         
    a=rand()%6;
         
    personaggio[a].casa[4]=19;
         while(
    personaggio[0].soldi<=200 && personaggio[1].soldi<=200 && personaggio[2].soldi<=200 && personaggio[3].soldi<=200 && personaggio[4].soldi<=200 && personaggio[5].soldi<=200){
             
    srand(time(NULL));
             for(
    i=0;i<6;){
                if(
    personaggio[i].soldi>0){
                
    dadi=f_dadi();

                
    personaggio[i].posizione=personaggio[i].posizione+dadi;
                if(
    personaggio[i].posizione>19)
                    
    personaggio[i].posizione=personaggio[i].posizione-20;
                for(
    z=0;z<6;z++)
                for(
    j=0;j<3;j++)
                if(
    personaggio[i].posizione==personaggio[z].casa[j])
                    {
    personaggio[i].soldi=personaggio[i].soldi-terreno[personaggio[i].posizione];
                     
    personaggio[z].soldi=personaggio[z].soldi+terreno[personaggio[i].posizione];}
               
    i++;}
               else
                
    i++;}}
                for(
    i=0;i<6;i++)
                    
    printf("%d\n",personaggio[i].soldi);
      return 
    0;
    }


    int f_dadi()
    {
        
    int dado1=1+rand()%6;
        
    int dado2=1+rand()%6;
        
    int dado=dado1+dado2;
        return 
    dado;


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto la srand va eseguita una sola volta all'inizio del programma, ma non è solo questo il problema ... deve essere anche

    for (i=0; i<18; i++)
    Ultima modifica di oregon; 20-02-2016 a 12:50
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Intanto la srand va eseguita una sola volta all'inizio del programma, ma non è solo questo il problema ... deve essere anche

    for (i=0; i<18; i++)
    corretto ma adesso crasha all'avvio
    edit. sono riuscito a correggero gli altri difetti, grazie mille
    Ultima modifica di thefiery77; 20-02-2016 a 18:25

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.