RYG: árbol de juego – selección de la profundidad

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: 30/05/2020 »

Una vez que hemos sido capaces de generar el primer nivel del árbol de juego, el siguiente paso ya es generar N niveles, tantos como la profundidad de análisis que se pretenda.

Y como la profundidad de análisis suele ser un parámetro de configuración del juego, se le suele pedir al usuario al arrancar. Y ya de paso le vamos a poner un titulillo, aunque sea cosa sencilla.

Por todo ello, en el programa principal, que está en el fichero “RYG.asm” aparecen estas dos llamadas nuevas (“jsr pintaTitulo” y “jsr solicitaProfundidad”):

Título y profundidad

La primera llamada (“jsr pintaTitulo”) es bien sencilla, y se limita a pintar un título:

Rutina pintaTitulo

La segunda llamada (“jsr solicitaProfundidad”) es un poco más compleja, pero tampoco mucho:

Rutina solicitaProfundidad

La rutina pinta una cadena, lee un byte del teclado, pinta un retorno de carro (13), verifica que el byte leído sea mayor o igual que 1 y menor que 6 y, en caso afirmativo, deposita la profundidad en la dirección “prof”. En caso negativo, vuelve a pedir la profundidad.

A estas alturas de la programación todavía no había echado las cuentas de memoria que vimos en la entrada “RYG: programa principal” así que todavía no era consciente de que con la codificación de 88 bytes por tablero el máximo de niveles era tres. Por eso en el programa veréis que se pide una profundidad entre 1 y 5.

Más adelante, cuando veamos la función de evaluación y cómo mejorarla, veremos que otra alternativa –o más bien otra medida complementaria– es meter más niveles de profundidad de análisis, lo que en nuestro caso pasaría inevitablemente por “comprimir” los tableros, porque el C64 tiene muy poca memoria.

Con estas dos pequeñas mejoras del programa principal, el arranque queda así:

Arranque

En la siguiente entrada, ya con la profundidad seleccionada por el usuario en “prof”, intentaremos generar un árbol de juego de esa profundidad, no de un solo nivel.


Código del proyecto: RYG09