RYG: jugadas del ratón – aplicación de la jugada del usuario

Programación retro del Commodore 64

  • Programación retro del Commodore 64
  • “Programación Retro del Commodore 64” es un blog sobre el hardware, el sistema operativo, y la programación del Commodore 64. Y más específicamente sobre programación en ensamblador. Pretende ser un blog con información de calidad, y referencia en español de la programación retro de esta maravillosa máquina.
    • Mi blog
« Publicado el: 03/05/2020 »

Ya somos capaces de generar las jugadas válidas del ratón y de pedirle al usuario cuál es la que le interesa. El siguiente paso, por tanto, es aplicar la jugada seleccionada por el usuario sobre el tablero actual, el que mantiene la situación actual de la partida.

Si quisiéramos llevar un historial de jugadas, por ejemplo, para permitir rectificar una jugada o grabar y cargar una partida, tendríamos que sacar copia del tablero actual en un nuevo tablero, aplicar la jugada del usuario sobre el nuevo tablero, y enlazar ambos tableros entre sí:

Registro jugadas

Sin embargo, como no queremos hacer nada de esto (no sería complejo), es suficiente con que apliquemos la jugada seleccionada por el usuario directamente sobre el tablero actual, perdiendo la situación anterior.

Para aplicar una jugada o movimiento, da igual que hablemos del ratón o los gatos, lo que hay que hacer es:

  • Poner vacío ($00) en la posición que actualmente ocupa la pieza.
  • Poner la pieza, en este caso un ratón ($01), en la posición de destino.

Y esto es, precisamente, lo que hace la nueva rutina “aplicaJugadaRaton”, que ubicamos en el fichero “GenJugadas.asm”:

Rutina aplicaJugadaRaton

Como se puede observar, la rutina “aplicaJugadaRaton” recibe como parámetros el tablero sobre el que se quiere actuar, la posición (fila, columna) de origen, y la posición (fila, columna) de destino. Usando la rutina “fijaContenido”, la rutina vacía ($00) la posición de origen, y pone un ratón ($01) en el destino.

Ahora sólo queda mejorar el programa principal “RYG.asm” y aplicar sobre el tablero actual el movimiento seleccionado por el usuario. Esto se hace desde la nueva rutina “aplicaJugadaSolicitada”:

Rutina aplicaJugadaSolicitada

Esta nueva rutina se llama desde el programa principal “RYG.asm” que, recordemos, había sido reestructurado en subrutinas para mayor claridad:

Programa principal - aplica jugada solicitada

Como además el programa principal lo hemos cerrado con un “jmp actualiza” (bucle de juego), el usuario puede jugar sucesivamente con el ratón, moviéndolo ya por todo el tablero. De hecho, se recomienda al lector practicar con el juego, moviendo el ratón hacia adelante y hacia atrás y, sobre todo, acercándose a la fila de gatos y a los bordes del tablero para comprobar que las jugadas propuestas son correctas:

Aplicación jugada ratón

Parece mentira, pero en relativamente pocos pasos ya tenemos la base del juego. Mucha de esta base será de igual aplicación a los gatos, aunque las cosas se complicarán porque hay cuatro gatos (frente a un ratón) y, sobre todo, porque para que el C64 decida sus jugadas será necesario conformar y evaluar un árbol de juego de varios niveles de profundidad.


Código del proyecto: RYG05