Vistas de página en total

sábado, 3 de agosto de 2013

TIC_TAC_TOE (3/5)

   Vais a ver hoy la forma de representar el estado de la jugada. Es el refresh del tablero.
   Podía programar  en esta rutina los bordes del tablero, pero dad que no van a borrarse la pantalla durante el juego, no tiene sentido gastar recursos en redibujar algo que ya está dibujado. Por ello, esta rutina solo rellena el interior del tablero, actualizando las "X" y las "O" según estén los bits de las variables oponente y máquina.
   Como ya se ha podido deducir de la entrada anterior, cada casilla está representada por un bit, partiendo de la segunda, contando desde la esquina superior izquierda.
  Hay nueve casillas, pero como la primera siempre es usada por la máquina como jugada inicial, quedan 8 para elegir. Por eso, un byte =8 bits, nos es suficiente para representar todas las casillas.
  Esta función, por lo tanto analiza cada bit y representa el símbolo.
   Dado que el tablero es idéntico para el oponente y la máquina, podemos utilizar la misma rutina, pasando la variable de máquina o la de oponente, según corresponda. Es por eso que se le pasa a la rutina dos parámetros. El byte con las casillas a presentar, un bit por cada una, y el símbolo a dibujar.

  Se podía haber utilizado un bucle con indices para recorrer las posibilidades, pero no quedaría ni más corto, ni más claro, ni sería más rápido, por lo que mejor lo programo de forma lineal

RUTINA _TABLERO

_tablero proc near
; oponente viene en bl, y el simbolo a imprimir en bh
        mouse off
        shl bl,1
        jnc c2
        gotoxy 12,4
        putchar bh
c2:
        shl bl,1
        jnc c3
        gotoxy 14,4
        putchar bh
c3:
        shl bl,1
        jnc c4
        gotoxy 10,6
        putchar bh
c4:       
        shl bl,1
        jnc c5
        gotoxy 12,6
        putchar bh
c5:
        shl bl,1
        jnc c6
        gotoxy 14,6
        putchar bh
c6:
        shl bl,1
        jnc c7
        gotoxy 10,8
        putchar bh
c7:
        shl bl,1
        jnc c8
        gotoxy 12,8
        putchar bh
c8:
        shl bl,1
        jnc c9
        gotoxy 14,8
        putchar bh
c9:
        mouse on
        ret
_tablero endp

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.