RYG: nueva validación de jugadas #Programación retro del Commodore 64

Una vez ampliados los tableros a 88 bytes, y alineados los datos en el visor de memoria, hay que seguir depurando el programa.

Una cosa que llama la atención de la versión 7 del proyecto, aparte de que se mete en un bucle, es que uno de los gatos desparece del tablero:

Bucle infinito

Esto nos puede llevar a pensar que la validación de las jugadas no es correcta. Recordemos que básicamente validábamos dos cosas (aparte de que el movimiento de la pieza era conforme a las reglas del juego):

  • Que la casilla de destino caía dentro del tablero.
  • Que la casilla de destino estaba vacía.

Quizás lo que ocurre no es tanto que ha desparecido un gato, sino que hay dos superpuestos en la misma casilla. Es decir, quizás está fallando la validación de las jugadas.

Y efectivamente, cuando hicimos la validación de jugadas ya adelantamos un presagio que de momento no hemos cumplido:

<<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.>>

Por tanto, tenemos que mejorar la rutina de validación de jugadas que, recordemos, es común para ratón y gatos (fichero "GenJugadasRaton.asm"). La principal mejora es hacerle llegar el tablero contra el que hacer la validación, es decir, el tablero contra el que mirar si la posición de destino está vacía u ocupada. La validación de límites es independiente del tablero.

La nueva rutina "validaJugada" pasa a tener esta definición (recibe un tablero como parámetro de entrada):

Rutina validaJugada nueva - definición

Y lo que cambia es la parte en que valida si el destino está vacío u ocupado, que lógicamente pasa a utilizar el tablero que recibe como parámetro:

Rutina validaJugada nueva - ocupado

Por supuesto, no llega con cambiar la rutina "validaJugada" para que reciba un tablero. También hay que cambiar las rutinas que, bien de forma directa o indirecta, llaman a aquella. Ahora deberán pasar un tablero como parámetro.

Con este cambio, la versión 8 del proyecto ya debería funcionar y generar bien el primer nivel del árbol. No obstante, la versión 8 recoge algunos otros cambios variopintos que, por no alargar esta entrada, se recogerán en la siguiente.


Código del proyecto: RYG08


Editar

Josepzin

No hay comentarios:

Publicar un comentario