Sto creando un gioco di strategia a turni bidimensionale usando c ++ e SFML-2.0. Il movimento è basato sulla distanza piuttosto che sulla griglia, con diversi pezzi a forma di triangolo che, in un dato turno, ciascuno può ruotare in posizione o spostarsi in avanti.
Il movimento funzionerà in modo tale che il giocatore scelga una posizione in cui spostare il pezzo, il che genera un potenziale percorso da prendere per il pezzo. Una volta che il giocatore conferma la sua decisione, il pezzo si sposterà lungo quel percorso nella posizione desiderata. I percorsi sono limitati da due fattori: la distanza, la distanza percorsa da un pezzo, tenendo conto di eventuali curve (quindi se c'è una curva, sarà la lunghezza lungo la curva e non direttamente da un punto all'altro); e l'angolo di sterzata, fino a che punto il pezzo può ruotare in qualsiasi punto (e fino a ogni punto) durante lo spostamento (ad esempio, da -30 a 30 gradi).
La mia domanda è, come devo fare per determinare la gamma di potenziali posizioni che il giocatore può selezionare per spostare il pezzo?
Non sono del tutto sicuro di quali equazioni e / o algoritmi usare qui. Il mio piano originale era estremamente complicato, al punto che era quasi impossibile da attuare, figuriamoci spiegare, e sono a questo punto totalmente perso con il progetto bloccato.
Come posso determinare il raggio di movimento di un'unità, tenendo conto del raggio di sterzata?
Ad esempio, nell'immagine qui sotto. Le linee rosse, blu e verdi sarebbero tutte della stessa lunghezza. Il cerchio viola indica il raggio di movimento che l'unità può muovere. (La forma è probabilmente imprecisa e le linee probabilmente non sono effettivamente della stessa lunghezza, ma hai l'idea)