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;