Advertisement
SMicro

TABLERO-OTHELLO

Apr 19th, 2016
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      :EJEMPLO BÁSICO DE REPRESENTACIÓN DE UN MAPA MATRIZ 8x8 PARA EL JUEGO REVERSI/OTHELO
  3. * Written by :Fulgencio
  4. * Date       :04/2016
  5. * Description:Se trata de a partir de una representación del tablero en la memoria, representar
  6. *             los elementos en la pantalla en modo texto. Se podría extrapolar la idea a un modo gráfico
  7. *             realizando los escalados oportunos para situar la ficha en el tablero gráfico
  8. *-----------------------------------------------------------
  9. VACIO EQU 0
  10. BLANCA EQU 1
  11. NEGRA EQU 2
  12.  
  13.     ORG    $1000
  14. START:                  ; first instruction of program
  15. * Put program code here
  16.      CLR.L D2  ; D2=COLUMNA
  17.      CLR.L D3  ; D3=FILA
  18.      
  19.      MOVE.L #TABLERO,A3 ;A3 apunta a la matrix 8x8
  20. REINICIO    
  21.      MOVE.B #8,D4 ;Contador de columna. Cada 8 saltamos a otra fila
  22. BUCLE  
  23.      MOVE.L D3,D0
  24.      MULU #8,D0
  25.      ADD.L D2,D0  *D0=D3*8+D2 (bidimensional -> unidimensional)  
  26.      MOVE.B (A3,D0),D1 *Cogemos el elemento de la matriz D1=FICHA o VACÍO
  27.                      *Compara con opciones
  28.      CMP.B #VACIO,D1
  29.      BEQ PINTAVACIO
  30.      CMP.B #BLANCA,D1
  31.      BEQ PINTABLANCA
  32.      CMP.B #NEGRA,D1
  33.      BEQ PINTANEGRA
  34.      
  35. PINTAVACIO
  36.     MOVE.B #'.',D1
  37.     BRA NEXT
  38.    
  39. PINTABLANCA
  40.     MOVE.B #'O',D1
  41.     BRA NEXT    
  42.  
  43. PINTANEGRA
  44.     MOVE.B #'X',D1
  45. NEXT  
  46.     MOVE.B #6,D0  *Pinta un caracter almacenado en D1
  47.     TRAP #15        
  48.  
  49.     ADD.L #1,D2  * Avanza columna
  50.     CMP.L #8,D2  * Si es la ultima
  51.     BNE BUCLE
  52.     MOVE.L #0,D2 * Columna 0
  53.     ADD.L #1,D3  * Avanzamos fila
  54.     JSR NUEVAFILA
  55.     CMP.L #8,D3  * ¿ Ya no hay mas ?
  56.     BNE BUCLE
  57.    
  58.     SIMHALT
  59.  
  60. NUEVAFILA
  61.     MOVEM.L D0/A1,-(A7) *Guardamos en pila
  62.     MOVE.L #14,D0
  63.     MOVE.L #CRLF,A1
  64.     TRAP #15
  65.     MOVEM.L (A7)+,D0/A1 *Recuperamos de la pila
  66.     RTS
  67.  
  68.  
  69. * Put variables and constants here
  70.  
  71. *TABLERO CORRESPONDE AL MAPA DE ESTADO DEL TABLERO 8x8. Se necesitan 64 elementos organizados en 8x8
  72. *Como una celda solo puede estar o vacía (0) o conteniendo una ficha blanca o negra(1 o 2)
  73.  
  74.  
  75. TABLERO
  76.        DC.B 0,0,0,0,0,0,0,0
  77.        DC.B 0,0,0,0,0,0,0,0
  78.        DC.B 0,0,0,0,0,0,0,0
  79.        DC.B 0,0,0,1,2,0,0,0
  80.        DC.B 0,0,0,2,1,0,0,0
  81.        DC.B 0,0,0,0,0,0,0,0
  82.        DC.B 0,0,0,0,0,0,0,0
  83.        DC.B 0,0,0,0,0,0,0,0
  84.        
  85. CRLF DC.B 10,13,0 *Cadena que representa avance de linea + retorno de carro
  86.  
  87.     END    START        ; last line of source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement