Una vez que ya somos capaces de validar una jugada, el siguiente paso es obtener todas las jugadas válidas del ratón (y sólo las validas). Esto lo conseguimos con la nueva rutina "generaJugadasValidasRaton" del fichero "GenJugadas.asm" que, resumidamente, es una combinación de las rutinas "generaJugadaRaton" y "validaJugada".
La rutina "generaJugadasValidasRaton" está declarada así:
Es decir, recibe como entrada la posición actual del ratón (fila y columna) y devuelve como salida hasta cuatro posiciones válidas.
El cuerpo de la rutina es así:
Es decir, esencialmente es un bucle desde X=0 hasta X=3, donde para cada valor del registro X:
- Genera la jugada X-ésima del ratón.
- Valida la jugada, es decir, verifica que el destino está vacío y dentro del tablero.
- Si es válida (etiqueta "gjvrValida"), almacena la jugada en la tabla de salida.
- Si no es válida (etiqueta "gjvrNoValida"), almacena ($ff, $ff) en la tabla de salida.
De este modo, al terminar la rutina, en la tabla de salida tenemos las jugadas válidas (nueva fila y columna) o ($ff, $ff) si una jugada es inválida.
De este modo, podemos volver a modificar el programa principal "RYG.asm". En vez de generar todas las jugadas del ratón con "generaJugadaRaton", generamos sólo las válidas con "generaJugadasValidasRaton", y éstas son las que pintamos:
El resultado es así:
Ahora ya podemos afirmar que, definitivamente, el C64 sabe mover el ratón. Se puede probar a mover el ratón a otra posición inicial y comprobar que los movimientos generados son correctos.
El siguiente paso será pedirle al usuario qué jugada quiere efectuar.
Código del proyecto: RYG03
No hay comentarios:
Publicar un comentario