Chiamare le tre macchinine "X" non è una buona idea XD, almeno direi un "X" "Y" "Z".

Vuol dire tipo questo

Hai trovato facendo la funzione randomica che n=5. Hai un array 5*7 e sei alla posizione 3,0. Se incrementassi semplicemente la x (il 3) di 5 caselle arriveresti alla 8,0 che chiaramente nel tuo array non esiste. Quindi dovresti fare una roba del tipo

codice:
               if(caselle+x<=limite)    /*dove x è la posizione in cui sei e limite è la lunghezza dell'array e caselle è di quanto devi spostarti*/
Stessa cosa per il conteggio verticale.

(chiaramente deve verificare la condizione solo se vuole muoversi orizzontalmente o verticalmente)

Se questi due if non sono soddisfatti dovresti fare una roba del tipo

codice:
while(caselle>0)
{
     if(x+1<=limite)      x++;
     else           y++;
}
stessa cosa per il verticale