▷ Juego en Visual Basic utilizando el evento .mouseMove


Este juego tiene tres niveles, el objetivo es sumar puntos. Para sumar puntos debemos mantener el puntero del mouse sobre la figura verde, si movemos el mouse sobre la o las figuras rojas, los puntos se restaran. Para ganar cada nivel tenemos que alcanzar un limite de puntos en un tiempo determinado.


Al iniciar ejecutar el programa nos aparecerá esta ventana, le damos click en continuar.



Una vez que hayamos presionado continuar nos aparecerá la ventana del juego.



En esta ventana podemos observar tres secciones:


1.- Pantalla del juego: Aquí las figuras que aparecen en pantalla se van a mover de un lugar a otro.


2.- Selección de nivel: Antes de empezar a jugar debemos seleccionar el nivel en esta parte.


3.- Sección de información: Aquí vamos a poder observar el tiempo, el puntaje actual y el objetivo de puntos al cual tenemos que llegar para superar cada nivel.


Explicación del código.

1.- En este programa utilizamos dos ventanas la primera se llama Instrucciones y la segunda juego. La ventana que nos aparece al ejecutar el programa es la de Instrucciones. Al presionar el boton continuar nos dirigimos a la siguiente ventana, esto lo hacemos gracias a las propiedades .sow ( mostrar ) y .hide (ocultar), con las siguientes lineas de código.

Private Sub Continuar_Click()
Juego.Show
Instrucciones.Hide
End Sub

2.- Una vez puesta en marcha la ventana del juego se ejecuta un temporizador (t2) con el cual comprobaremos que option button se ha seleccionado. Para verificar si un option button ha sido seleccionado utilizamos la siguiente instrucción:



If optionbutton.Value = True Then // si se a seleccionado el option entonces.

// Proceso a ejecutarse.

End If

La propiedad .Value tiene dos opciones true(optionbutton seleccionado) y false ( optionbutton no seleccionado).


Esto pasa si seleccionamos el primer optionbutton: Nivel 1.

If n1.Value = True Then 

jugar.Enabled = True
L2 = 60
L1 = 0
Objetivo = 500
t1.Interval = 700
E.Visible = False

End If

El boton jugar se habilita, colocamos en el label L2 (tiempo) el numero 60, el numero 0 en label L1 (puntaje), 500 en el label Objetivo (Objetivo) , colocamos la velocidad de movimiento de los objetos en 700ms, ocultamos una tercera figura (E).


Una vez seleccionado el nivel, presionamos el botón jugar.


Al presionar el botón jugar:


Deshabilitamos el primer temporizador (t2) que activamos, le asignamos a la variable tiempo el valor del label L2.

t2.Enabled = False 
TIEMPO = L2

Vamos a la subrutina enable, en esta subrutina habilitamos los objetos

Private Sub enable()
      t3.Enabled = True (Temporizador del conteo regresivo)
      C.Enabled = True (Figura verde) 
      D.Enabled = True (Figura roja)
      E.Enabled = True (Figura roja aparece en el nivel 3)
      t1.Enabled = True (Temporizador donde se lleva a cabo el movimiento de los
      objetos en pantalla)
    End Sub
    

En el temporizador t1 (Private Sub t1_Timer()) tenemos lo siguiente:


Le damos a UDv un numero aleatorio que va a ir de 0 a 4320 .

UDv = (CLng(0 - 4200) * Rnd + 4320) 

Le damos a LRv un numero aleatorio que va a ir de 0 a 9800

LRv = (CLng(0 - 9480) * Rnd + 9480) 

Asignamos los valores aleatorios de: UDv a la propiedad D.top y LRv a la propiedad D.left.


Con la propiedad top movemos el objeto de arriba hacia abajo y con la propiedad left movemos el objeto de derecha a izquierda.

Los valores mínimo y máximo que asignamos anteriormente a UDv y LRv dependerán del ancho de nuestra pantalla en la cual queremos que se desarrolle el juego.


El valor mínimo de UDv corresponde al valor de la propiedad top, ubicando el objeto en el limite superior de nuestra pantalla de juego.



El valor máximo de UDv corresponde al valor de la propiedad top, ubicando el objeto en el limite inferior de nuestra pantalla de juego.



Lo mismo pasa con el valor aleatorio de LRv, en este caso utilizamos el valor de la propiedad left. Esto lo tienen que hacer con los damas objetos que estaran en movimiento los nombres de UDv y LRv, pueden remplazarlos por cualquier nombre. Hay que generar diferentes números aleatorios para cada objeto porque si le ponemos a todos UDv y LRv, todos se van a mover a la misma dirección.


Asignamos los numeros aleatorios generados al objeto, en este caso es el objeto llamado D.

    D.Top = UDv 
D.Left = LRv

En el temporizador t3 (Private Sub t3_Timer()) tenemos lo siguiente:


Restamos el valor de la variable tiempo e imprimimos ese valor en el label(L2)

  TIEMPO = TIEMPO - 1 
L2.Caption = TIEMPO

Cuando el tiempo sea igual a 0.

    If TIEMPO = 0 Then 

Nos dirigimos a la subrutina disable, en esa subrutina deshabilitamos: los objetos (C,D,E), el temporizador de conteo regresivo (t3) y el Temporizador donde se lleva a cabo el movimiento de los objetos en pantalla (t1)

disable 

Private Sub disable()

t3.Enabled = False
t1.Enabled = False
C.Enabled = False
D.Enabled = False
E.Enabled = False
End Sub

Enceramos la variable sum, habilitamos el botón jugar y mostramos un mensaje en pantalla, señalando que perdió el juego porque se le termino el tiempo.

sum = 0 
jugar.Enabled = True
MsgBox "Se termino el tiempo", 64, "Perdiste"

Habilitamos los optionbuttons y el temporizador t2

n1.Enabled = True 
n2.Enabled = True
n3.Enabled = True
t2.Enabled = True
End If
End Sub

Deshabilitamos el botón jugar.

jugar.Enabled = False     

Escondemos el label L3, este label contiene el texto (SELECCIONE EL NIVEL Y PRESIONE JUGAR PARA QUE EMPIECE EL JUEGO)

L3.Visible = False     

Deshabilitamos los optionbuttons

n1.Enabled = False    
n2.Enabled = False
n3.Enabled = False

Ponemos en 0 el label L1 (Puntaje)

L1.Caption = "0"     

Evento MouseMove


Utilizamos este evento en cada una de los objetos que se moverán. Como les decia en este caso vamos a utulizar este evento para que cuando coloquemos el mause sobre los objetos en movimiento (en este caso las imagenes), se sumen o se resten los puntos, para ello tenemos que crear una variable en este caso es la variable sum. A continuacion paso a explicar el codigo de la imagen verde (la que suma los puntos).

Cada vez que pasemos el mouse sobre esta imagen sumamos la variable sum e imprimimos su valor en el label L1

Private Sub C_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 
sum = sum + 1
L1.Caption = sum

Si alcanzamos el objetivo de puntos especificados para cada nivel entonces:

If sum = Objetivo Then 

Enceramos la variable sum e imprimimos un mensaje en un MsgBox

sum = 0 
MsgBox "Felicitaciones, Completaste el nivel.", vbInformation, "Ganaste"

Deshabilitamos los objetos.

disable 

Habilitamos los optionbuttons, el boton jugar, t2 y desactivamos t3

n1.Enabled = True 
n2.Enabled = True
n3.Enabled = True
jugar.Enabled = True
t2.Enabled = True
t3.Enabled = False
End If
End Sub

Para las imágenes que restan los puntos cuando pasamos el mouse sobre ellas:

Private Sub D_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 
sum = sum - 1
L1.Caption = sum
End Sub

Simplemente restamos el valor de la variable sum y lo mostramos en el label L1

Eso es todo, si tienen alguna inquietud escribanlo en los comentarios.

0/Post a Comment/Comments