Data Serpiente
display: .word 0:4096 # Dimension 512x512
# Base address for display 0x10010000 (static data)
# Unit width & height = 8
obstaculos: .space 800 # Habran 100 obstaculos en cada mapa. Constante.
# Constantes
mapaAncho: .word 64 # Ancho (X) del mapa
mapaAltura: .word 64 # Altura (Y) del mapa
tiempoDormir: .word 200 # Milisegundos para cambiar al siguiente cuadro deljuego (hilo)
# Variables (Se reserva memoria, pero son inicializadas luego)
largoCola: .space 4 # El largo de la cola de la serpiente. Cuando comienza el juego esta es 0.
direccion: .space 4 # Direccion, hacia donde se mueve la serpiente.
comidaX: .space 4 # Posicion X de la comida, dentro de la matriz.
comidaY: .space 4 # Posicion Y de la comida, dentro de la matriz.cabezaSerpienteX: .space 4 # Posicion X de la cabeza de la serpiente.
cabezaSerpienteY: .space 4 # Posicion Y de la cabeza de la serpiente.
juegoEnMovimiento: .space 4 # Verdadero o falso. El juego esta o no movimiento (cada partida comienza pausada).
.text
###################################################################
########################################################################################## JUEGO PRINCIPAL ###########################
###################################################################
###################################################################
Intro:
jal animacionIntro
Main:
jal iniciarPartidaDesdeCero
MainJuego: # Comienza el juego principal
jal obtenerTeclado
la $t0, juegoEnMovimiento # Chequea siel juego esta en movimiento
lw $t0, 0($t0)
bnez $t0, movimientoIniciado # Si esta en movimiento, saltar a "movimientoIniciado".
beqz $t0, MainJuego # Vuelve a hiloPrincipal, sin que se ejecute el resto del hilo
movimientoIniciado:
jal despintarRegionesRedibujo
jal moverColaSerpiente
jal moverCabezaSerpiente
jal chequearComeComidajal pintarTodo
jal chequearColisionConsigoMisma
bnez $v0,perderPartida
jal chequearColisionObstaculos
bnez $v0,perderPartida
jal dormir
j MainJuego
perderPartida:
li $a0, 3000
jal dormirUsandoOtroValorDeTiempo
j Main
# terminar ejecucion
li $v0, 10
syscall
######################################################################################################################################
################## DEFINICION DE SUBRUTINAS #######################
###################################################################
###################################################################
# Argumentos: -
# Retorno: -
# Descripcion: Animacion para la intro
animacionIntro:
move $s0, $ra
li $a0, 0xff0000jal pintarFondo
li $a0, 5
li $a1, 8
jal pintarCuadro
li $a0, 6
li $a1, 8
jal pintarCuadro
li $a0, 7
li $a1, 8
jal pintarCuadro
li $a0, 8
li $a1, 8
jal pintarCuadro
li $a0, 9
li $a1, 8
jal pintarCuadro
li $a0, 12
li $a1, 8
jal pintarCuadro
li $a0, 19
li $a1, 8
jal pintarCuadro
li $a0, 25
li $a1, 8
jal pintarCuadro
li $a0, 31
li $a1, 8
jal pintarCuadro
li $a0, 35li $a1, 8
jal pintarCuadro
li $a0, 39
li $a1, 8
jal pintarCuadro
li $a0, 40
li $a1, 8
jal pintarCuadro
li $a0, 41
li $a1, 8
jal pintarCuadro
li $a0, 42
li $a1, 8
jal pintarCuadro
li $a0, 43
li $a1, 8
jal pintarCuadro
li $a0, 44
li $a1, 8
jal pintarCuadro
li $a0, 4
li $a1, 9
jal pintarCuadro
li $a0, 12
li $a1, 9
jal pintarCuadro
li $a0, 13
li $a1, 9
jal pintarCuadro
li$a0, 19
li $a1, 9
jal pintarCuadro
li $a0, 24
li $a1, 9
jal pintarCuadro
li $a0, 26
li $a1, 9
jal pintarCuadro
li $a0, 31
li $a1, 9
jal pintarCuadro
li $a0, 34
li $a1, 9
jal pintarCuadro
li $a0, 39
li $a1, 9
jal pintarCuadro
li $a0, 4
li $a1, 10
jal pintarCuadro
li $a0, 12
li $a1, 10
jal pintarCuadro
li $a0, 14
li $a1, 10
jal pintarCuadro
li $a0, 19
li $a1, 10
jal...
Regístrate para leer el documento completo.