Estoy creando un juego de estrategia bidimensional basado en turnos usando c ++ y SFML-2.0. El movimiento se basa en la distancia en lugar de en la cuadrícula, con varias piezas diferentes en forma de triángulo que, en un giro dado, cada una puede rotar en su lugar o avanzar.
El movimiento funcionará de tal manera que el jugador seleccione una ubicación para que la pieza se mueva, lo que genera un camino potencial para que la pieza tome. Una vez que el jugador confirma su decisión, la pieza se moverá a lo largo de ese camino a la ubicación deseada. Las rutas están limitadas por dos factores: distancia, qué tan lejos puede llegar una pieza, teniendo en cuenta cualquier giro (por lo tanto, si hay una curva, será la longitud a lo largo de la curva, y no directamente de un punto a otro); y ángulo de dirección, qué tan lejos puede girar la pieza en cualquier punto (y hasta todos) mientras se mueve (por ejemplo, de -30 a 30 grados).
Mi pregunta es, ¿cómo debo determinar el rango de ubicaciones potenciales que el jugador puede seleccionar para mover la pieza?
No estoy completamente seguro de qué ecuaciones y / o algoritmos usar aquí. Mi plan original era extremadamente complicado, hasta el punto de que era casi imposible de implementar, y mucho menos explicar, y en este punto estoy totalmente perdido con el proyecto estancado.
¿Cómo puedo determinar el alcance que puede mover una unidad, teniendo en cuenta su radio de giro?
Por ejemplo, en la imagen de abajo. Las líneas roja, azul y verde tendrían la misma longitud. El círculo morado indica el rango de movimiento que la unidad puede mover. (La forma es probablemente inexacta y las líneas probablemente no son en realidad la misma longitud, pero se entiende la idea)