Professional Documents
Culture Documents
Clave 2 TXT
Clave 2 TXT
Clave 2 TXT
INCLUDE MIP115.inc
.data
suelo BYTE
"__________________________________________________________________________________
________________________________________",0
strPuntaje BYTE "PUNTOS: ",0
strVida BYTE "VIDAS: ",0
puntaje BYTE 0
xPos BYTE 20
yPos BYTE 20
xPremioPos BYTE ?
yPremioPos BYTE ?
entrada BYTE ?
bandera BYTE ?
xBombaPos BYTE ?
yBombaPos BYTE ?
superpoder BYTE 0
vida BYTE 5
colorfondo DWORD 11101110b
mostrarmenu:
call Clrscr
mov dl,0
mov dh,0
call Gotoxy
mov edx,OFFSET menu
call WriteString
call Crlf
call Crlf
call ReadInt
cmp al,1
je iniciajuego
cmp al,2
je configurar
cmp al,3
je verpuntos
cmp al,4
je salirjuego
jmp mostrarmenu
verpuntos:
;===============================================================
; Se encarga de la funcion 2
call Clrscr
mov dl,0
mov dh,0
call Gotoxy
mov edx,OFFSET strPuntaje
call WriteString
mov al,puntaje
call WriteInt
call Crlf
call WaitMsg
jmp mostrarmenu
;===============================================================
; realiza la configuracion del nickname opcion 3
configurar:
call Clrscr
mov dl,0
mov dh,0
call Gotoxy
mov edx,OFFSET pidenombre
call WriteString
call ReadKey
cmp al,"r";
je mostrarmenu
call WaitMsg
jmp mostrarmenu
;===============================================================
;OPCION 1 LOGICA DEL JUEGO
iniciajuego:
call Clrscr
mov puntaje,0
; dibuja el suelo a (0,29):
;=================================================================
;ZONA DE JUEGO VERDE, INICIA EL JUGADOR EN VERDE
mov eax,yellow +(GREEN * 16)
call SetTextColor
;===============================================================
mov dl,0
mov dh,29
call Gotoxy
mov edx,OFFSET suelo
call WriteString;muestra el suelo
mov xPos,0
mov ah,yPremioPos
mov yPos,27
;==============================================================
;logica del juego en caso que no haya tecla presionada
continuar:
cmp vida,0 ;si la vida es cero
je mostrarmenu ;salta al menu
JuegoLoop:
;=============================================================================
mov bl,xPos
cmp bl,xBombaPos ;si la posicion de la bomba coincide con la del jugador
je incrementp ;salta a incrementar puntos
mov bl,xPos
cmp bl,xPremioPos
jne noRecolecta
inc puntaje
incrementp:
call ReadKey ;si hay colision con la bomba y se presiona la letra i
salta a sumar puntos
cmp al,74h;letra t
je suma
jmp noRecolecta
suma:
inc puntaje ;aumenta el puntaje
; Muestra el puntaje
mov dl,0
mov dh,0
call Gotoxy
mov edx,OFFSET strPuntaje
call WriteString
mov al,puntaje
call WriteInt
; Muestra vidas
mov dl,20
mov dh,0
call Gotoxy
mov edx,OFFSET strVida
call WriteString
mov al,vida
call WriteInt
; logica de gravedad
gravedad:
cmp yPos,27
jg sobrePiso
; hacer caer al jugador:
call ActualizarPlayer
inc yPos
call DibujarJugador
mov eax,80
call Delay;demora
jmp gravedad
sobrePiso:
jmp JuegoLoop
MoverIzquierda:
call ActualizarPlayer
dec xPos
call DibujarJugador
mov eax,70
call Delay
jmp JuegoLoop
MoverDerecha:
call ActualizarPlayer
inc xPos
call DibujarJugador
mov eax,70
call Delay
jmp JuegoLoop
;======================================
;si bandera es cero mueve a la derecha, si es uno a la izquierda
verificasentido:
cmp bandera,0
je MoverDerecha
cmp bandera,1
je MoverIzquierda
;
resetpos:
mov xPos,0
mov yPos,27
jmp resetposrebote
salirJuego:
exit
main ENDP
;=================================================
;Funciones
DibujarJugador PROC
; dibuja jugador en (xPos,yPos):
mov dl,xPos
mov dh,yPos
call Gotoxy
mov al,"@"
call WriteChar
ret
DibujarJugador ENDP
ActualizarPlayer PROC
mov dl,xPos
mov dh,yPos
call Gotoxy
mov al," "
call WriteChar
ret
ActualizarPlayer ENDP
DibujaPremio PROC
mov eax,yellow (yellow * 16)
call SetTextColor
mov dl,xPremioPos
mov dh,yPremioPos
call Gotoxy
mov al,"@"
call WriteChar
ret
DibujaPremio ENDP
CrearPremioAleatorio PROC
mov eax,55
inc eax
call RandomRange
mov xPremioPos,al
mov yPremioPos,28
ret
CrearPremioAleatorio ENDP
CrearPosAleatorio PROC
mov eax,70
inc eax
call RandomRange
mov xPremioPos,al
mov yPremioPos,27
ret
CrearPosAleatorio ENDP
DibujaBomba PROC
mov eax,yellow (red * 16)
call SetTextColor
mov dl,xBombaPos
mov dh,yBombaPos
call Gotoxy
mov al,"B"
call WriteChar
ret
DibujaBomba ENDP
CrearBombaAleatorio PROC
mov eax,69
inc eax
call RandomRange
mov xBombaPos,al
mov yBombaPos,28
ret
CrearBombaAleatorio ENDP
END main