Clave 2 TXT

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

;Para activar la invisibilidad presione la tecla t minuscula.

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

menu BYTE "1-Jugar ",0AH,0DH,"2-Configurar",0AH,0DH,"3-Puntos",0AH,0DH,"4-Salir",0


pidenombre BYTE "Ingrese el nombre de usuario:",0
nombre BYTE "invitado",0
.code
main PROC

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

mov edx,OFFSET nombre


mov ecx,15 ;buffer size - 1
call ReadString

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 vida,5 ;inicializa las vidas


Mov bandera,0 ; pone en cero la direccion del jugador para que se mueva a la
derecha inicialmente
;=================================================================
;POSICION (0,0)
;==================================================================
call Randomize
call CrearPosAleatorio

mov xPos,0
mov ah,yPremioPos
mov yPos,27

;en la siguiente seccion se verifica en cada rebote


resetposrebote:

call ReadKey ;lee letra del teclado

jz continuar ; si no se presiono continuar con juego

cmp al,1bh; si se presiona esc salir al menu


je mostrarmenu

cmp al,72h;si se presiona r salir al menu


je mostrarmenu

;==============================================================
;logica del juego en caso que no haya tecla presionada
continuar:
cmp vida,0 ;si la vida es cero
je mostrarmenu ;salta al menu

call DibujarJugador ;muestra jugador

call CrearPremioAleatorio;posiciones de bomba


call DibujaPremio; dibuja la bomba

call CrearBombaAleatorio;posiciones de bomba


call DibujaBomba; dibuja la bomba

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

jmp noRecolecta; en caso que no haya colision entre bomba y jugador


saltar a norecolecta

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

dec vida ;si no se presiona i se decrementan los puntos


add colorfondo,yellow*(green*16) ; se suman valores al color de fondo

mov eax,colorfondo ;se establece el nuevo color de fondo despues de


decrementar las vidas.
call SetTextColor
;===============================================================
;se muestra el suelo en nuevo color
mov dl,0
mov dh,29
call Gotoxy
mov edx,OFFSET suelo
call WriteString

jmp noRecolecta

suma:
inc puntaje ;aumenta el puntaje

noRecolecta: ;en caso que no se presione tecla

mov eax,white+ (black * 16)


call SetTextColor

; 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

; Muestra Nombre del usuario


mov dl,70
mov dh,0
call Gotoxy
mov edx,OFFSET nombre
call WriteString

; 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:

cmp xPos,70;verifica si colisiono con 70 a la derecha


jg resetpos
jmp MoverDerecha

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

jmp JuegoLoop ;regresa al juego

;
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

You might also like