Sto monitorando la posizione dei personaggi su una griglia 2D (questo è un gioco per computer). Ad ogni passo ogni personaggio può tentare di muoversi (stazionario, su, giù, sinistra o destra).
Ci sono alcune regole che governano quali mosse sono permesse. Esempio:
- I personaggi non possono muoversi fuori dai confini della griglia.
- I personaggi non possono passare l'uno durante l'altro durante lo spostamento.
- I caratteri non possono spostarsi in quadrati che contengono un altro carattere.
- Se due personaggi cercano di spostarsi nello stesso quadrato:
- I caratteri che si spostano direttamente ricevono la priorità.
- I personaggi che si spostano in diagonale verso il basso ottengono la 2a priorità.
- I caratteri che si spostano orizzontalmente ottengono la 3a priorità ..
- Etc.
- Se due personaggi cercano di spostarsi nello stesso quadrato e nessuno dei due ha priorità, nessuno dei due può muoversi.
Quindi la natura di queste regole è che i movimenti del personaggio non possono essere applicati allo stato in sequenza, perché i movimenti di altri personaggi possono influenzare se sono in grado di muoversi o meno.
Sto trovando questo codice sorprendentemente complesso da scrivere. E questo mi riguarda perché farò
- Vuoi estendere questo sistema in futuro per avere più regole.
- È necessario creare sistemi simili in cui gli input devono essere risolti insieme ma dipendono l'uno dall'altro.
La mia domanda è. C'è un modello o una struttura che potrei applicare per semplificare o almeno standardizzare l'approccio per questo tipo di problema?
Se dovessi provare a dichiarare il problema in modo astratto, sarebbe: fare una modifica basata su regole a uno stato dato più input che, se elaborati in isolamento, porteranno a stati finali in conflitto.