Salve, per l'esame di programmazione 1 devo preparare un progetto in c, devo simulare un autoscontro.
La traccia dice questo
Si supponga di avere quattro macchine al centro dei quattro lati opposti di una griglia
(vedi figura). Le macchine possono muoversi in una della quattro posizioni vicine.
La griglia è formata da mura esterne ed è di 8x8 caselle.
Si supponga che ogni macchina si muova seguendo le seguenti regole:
o La macchina 1 può andare a destra con probabilità 20% a sinistra con
probabilità del 10%, in avanti con probabilità del 30 % e indietro con
probabilità del 40%.
o La macchina 2 osserva i movimenti della macchina 1 e con una probabilità
del 30% sceglie la stessa direzione.
o La macchina 3 può andare a destra con probabilità 30% a sinistra con
probabilità del 20%, in avanti con probabilità del 5 % e indietro con
probabilità del 45%.
o La macchina 4 osserva le direzioni delle altre auto e si sposta nella direzione
di minima distanza (usare un algoritmo ricorsivo per calcolare la minima
distanza).
La simulazione finisce quando si verifica uno scontro tra almeno due macchine.
L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si
ricorda che, per esempio, se numero_casuale è un int, la chiamata
numero_casuale=rand()%11; genera un numero casuale intero (distribuzione
uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9,10). Usare sempre la srand() per rendere
automatica la scelta iniziale del seed della sequenza di numeri casuali. Effettuare almeno
5 simulazioni.
Vorrei capirci di più su come strutturare l'algoritmo. Devo prima di tutto sviluppare una mappa di gioco quindi dovrò utilizzare un array 2d. Da lì in poi non so praticamente come andare avanti neanche concettualmente, è il primo programma un pò più serio che viene proposto nel mio corso di studi, gli esercizi precedenti nel corso erano molto più banali.
Le varie macchine devono essere dei punti dell'array che devo inizializzare io e farle muovere simulando con srand gli spostamenti? Ringrazio chi mi renderà un pò più chiara la traccia.