¿Es más eficiente incluir una función de "verificación de ubicación" en una "función de movimiento" para un juego, o fuera como una función externa?

votos
0

Estoy creando un juego en C ++ (hablando de eso, ¿el código que uso importa?), Que podría describirse vagamente como un juego de mesa, y me pregunto cuál de estos dos verificará si el personaje está fuera de límites funciones es más eficiente:

UNO:

int main()
{
    //display board
    //get player input
    //move player
    //if player is out of bounds,
      //force player back into bounds
}

DOS

//int main()
{
    //same thing, except without last two lines.
}
void move(char input)
{
    //if input does not place player out of bounds
      //move player according to input
}

Esencialmente, el primero mueve cada entidad, luego verifica todas las posiciones de las entidades y las reajusta en consecuencia, y la segunda se asegura de que los jugadores se muevan no lo mueva fuera de límites, sino que espere hasta el final del ciclo.

Me gustaría saber cuál de estos dos (¿sistemas?) Es más eficiente o más rápido que el otro, o si ambos son iguales, ¿cuál de estos sería un mejor estilo de codificación?

Publicado el 05/06/2009 a las 21:48
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
0

El último es más rápido (No hacer Y deshacer). También creo que es el limpiador, pero esa es una cuestión de opinión.

Respondida el 05/06/2009 a las 21:50
fuente por usuario

votos
0

Me aseguraría de que cualquier movimiento sea legal antes de moverlo. De esta forma, mantendrá un estado de cordura en lugar de intentar algo y dejar el "tablero" en un estado inválido. También tiene más sentido de una manera orientada a objetos. El objeto no puede realizar un movimiento no válido, por lo que se puede confiar en el movimiento.

Respondida el 05/06/2009 a las 21:51
fuente por usuario

votos
0

Revisar antes de mudarnos sería más rápido, salvo, supongo, que las probabilidades de que una persona salga de los límites son notablemente bajas.

Con respecto al estilo, recomiendo no verificar los límites desde dentro del método move (), incluso si esa verificación se extrae en su propio método, ya que eso le da dos "razones para cambiar" el método move () por la línea (rompiendo así el Single Responsabilidad : algunas personas solo hacen cumplir esto a nivel de clase, pero lo recomiendo para métodos cuando puede salirse con la suya).

Respondida el 05/06/2009 a las 22:17
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more