▷ Mover objetos en Visual Basic 6.0 utilizando las teclas de dirección


Colocamos un picture box en el formulario



Yo le puse una imagen de un circulo, de nombre le puse "figG1".



hacemos doble click sobre la imagen.



Seleccionamos la propiedad keyDown.


Código de figG1.

 Private Sub figG1_KeyDown(KeyCode As Integer, Shift As Integer)

If (KeyCode = vbKeyDown) Then
figG1.Top = figG1.Top + MoveTime
End If

If (KeyCode = vbKeyUp) Then
figG1.Top = figG1.Top - MoveTime
End If

If (KeyCode = vbKeyLeft) Then
figG1.Left = figG1.Left - MoveTime
End If

If (KeyCode = vbKeyRight) Then
figG1.Left = figG1.Left + MoveTime
End If

Dentro de la subrutina figG1_KeyDown(KeyCode As Integer, Shift As Integer) realizamos las comprobaciones para detectar que tecla se ha pulsado y la función que debe realizar el programa cuando se precione dicha tecla tecla. También tenemos unas condiciones que definen cual es el espacio en el cual se puede desplazar el objeto.


Para mover el objeto presionando una tecla realizamos la siguiente comprobación.

If (KeyCode = vbKey...) then
vbKeyDown = tecla abajo
vbKeyUp = tecla arriba
vbKeyRight = tecla derecha
vbKeyLeft = tecla izquierda

Para mover la figuta en forma vertical utilizamos la propiedad .Top. Entonces para que la figura se mueva hacia arriba utilizamos el siguiente código.figG1.Top = figG1.Top + MoveTime.


MoveTime es una constante definida en la sub rutina form load. Variando el valor de esta constante, aumentamos o disminuimos la velocidad de deslazamiento del objeto.

Private Sub Form_Load()
 MoveTime = 500
End Sub

Para que la figura se mueva hacia abajo usamos la siguiente linea de código. figG1.Top = figG1.Top - MoveTime. Como pueden observar lo que cambia es únicamente el signo.


Para mover la figuta en forma horizontal utilizamos la propiedad .Left. Para que la figura se mueva hacia la izquierda utilizamos el siguiente código. figG1.Left = figG1.Left - MoveTime. Para que se mueva hacia la derecha, figG1.Left = figG1.Left + MoveTime.


En este punto ya podemos mover el objeto utilizando las teclas de dirección.


Ahora vamos a delimitar el área en la cual el objeto se moverá, para eso realizamos comparaciones con >= o <= dependiendo de que limite se trate. Para determinar el área debemos colocar la imagen dentro de los limites propuestos y tener en cuenta los valores de las porpiedades .Top y .Left.

Limite derecho

Limite izquierdo
Limite superior

Limite inferior


Una vez establecidos los limites procedemos a hacer las comparaciones.


Para delimitar los limites derecho e izquierdo utilizamos las siguientes lineas de codigo.


Si la figura llega al limite derecho entonces le damos el valor de ese limite a la propiedad Left del objeto

If (figG1.Left <= 360) Then
	figG1.Left = 360
End If

Hacemos lo mismo con el limite derecho el superior y el inferior teniendo en cuenta las propiedades left y top.

If (figG1.Left <= 360) Then
  figG1.Left = 360
End If

If (figG1.Left >= 3960) Then
  figG1.Left = 3960
End If

If (figG1.Top <= 480) Then
  figG1.Top = 480
End If

If (figG1.Top >= 2760) Then
  figG1.Top = 2760
End If

End Sub

Si tienen alguna duda comenten, con gusto les responderé.


En el próximo post veremos como detectar si dos objetos han colisionado.


Descarga los archivos de visual basic aqui:

0/Post a Comment/Comments