RYG: pintado de tableros

Tanto para dotar al programa de una interfaz de usuario como para poder hacer tareas de depuración, se hace necesario pintar tableros por pantalla.

De momento optaremos por un pintado sencillo, en modo texto. Más adelante se podrá mejorar el aspecto con caracteres personalizados o, incluso, con sprites.

El pintado de tableros no es difícil. Básicamente consiste en utilizar algunas rutinas de la librería “LibText” que desarrollamos durante los proyectos del volumen I y el volumen II. Cuando se trata de pintar números o direcciones usamos “pintaHex” y cuando se trata de pintar cadenas de texto usamos “pintaCadena”.

Aunque no es difícil, sí es farragoso pintar un tablero entero. Por ello, la nueva rutina “pintaTablero”, que es larga y tiene subrutinas, la implementamos en un nuevo fichero “PintaTableros.asm”.

La rutina “pintaTablero” no tiene mucho misterio, así que sólo daré un par de pinceladas sobre su implementación. Básicamente se trata de dividir el trabajo en varias subrutinas:

Rutina pintaTablero

Cada una de estas subrutinas (“pintaSeparador”, “pintaDatosBasicos”, etc.) se encarga de una función más pequeña y más específica.

Quizás el mayor misterio esté en la subrutina “pintaTabla”, que es la que pinta la matriz de datos del tablero. Básicamente es un bucle que pinta la matriz fila por fila:

Rutina pintaTabla

Y, a su vez, pintar una fila es pintar las fichas (ratón, gato o vacío) de todas las columnas de esa fila. Y para obtener esa información nos apoyamos en la ya conocida “dameContenido”:

Rutina pintaFila

Por último, la rutina “pintaFicha” pinta una “R” para el ratón, una “G” para los gatos, y un punto para las casillas vacías:

Rutina pintaFicha

En resultado es algo así (de momento el tablero no tiene información de padre ni hijos, pero sí está inicializado con las piezas en su sitio):

Tablero pintado

Como digo, esto se puede convertir en algo más vistoso más adelante mediante el uso de caracteres personalizados, pero no vamos a empezar la casa por el tejado.


Código del proyecto: RYG01

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