RYG: jugadas del ratón – validación de jugadas

Las condiciones para que una jugada del ratón sea válida son tres:

  • Que respete las reglas de movimiento, es decir, que sea en diagonal, hacia delante o hacia atrás, y moviendo una única casilla.
  • Que la casilla de destino esté dentro de los márgenes del tablero.
  • Que la casilla de destino esté libre, puesto que no hay capturas.

La primera condición se cumple siempre, puesto que la forma de generar los movimientos mediante dos tablas lo garantiza.

Las condiciones dos y tres de momento no están garantizadas. Hay que comprobarlas. Lo bueno es que son las mismas condiciones que necesitan los gatos, de modo que con una única rutina de validación podemos validar los movimientos de ratón y gatos.

La rutina de validación se llama “validaJugada”, y es una nueva rutina del fichero “GenJugadas.asm”:

Rutina validaJugada - params

Recibe como parámetros de entrada la nueva fila y columna, es decir, la posición de destino. Y devuelve si el movimiento es válido o no con $00 (válido) o $ff (no válido). Nada más empezar inicializamos la salida asumiendo que no será válido.

La validación de los límites del tablero se hace así:

Rutina validaJugada - límites

Es decir, verificamos si la nueva fila es -1 = $ff u 8. Lo mismo con la columna. Y, como las coordenadas válidas van desde 0 hasta 7, ambas incluidas, cualquier fila o columna que valga -1 u 8 están fuera del tablero. No es necesario verificar valores menores que -1 ni mayores que 8, puesto que las fichas sólo se mueven una casilla en cada movimiento.

Por otro lado, la verificación de si el destino está ocupado o no es así:

Rutina validaJugada - contenido

Es decir, se recupera el contenido de la posición de destino con la rutina “dameContenido” y se comprueba si es vacío.

Si cualquiera de las validaciones anteriores (límites o contenido) falla, la rutina termina con un “rts” y devuelve el valor $ff (jugada no válida). Si todas las validaciones se superan, la rutina devuelve $00 (jugada válida).

La rutina anterior tiene una limitación que de momento es aceptable: sólo trabaja sobre el tablero actual (que está implícito). Pero cuando construyamos el árbol de juego para que el C64 juegue por los gatos hará falta validar jugadas sobre un tablero arbitrario del árbol. Llegados ese momento habrá que mejorarla.


Código del proyecto: RYG03

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s