ayuuuda juego visual basic !!

Iniciado por David977, 24 Febrero 2015, 12:55 PM

0 Miembros y 1 Visitante están viendo este tema.

David977

Buenas,
Estoy haciendo un juego como el geometry dash y me gustaría saber el código para hacer que el cuadrado (un picturebox) realice un salto hacia arriba hasta cierta altura al presionar una tecla del teclado (preferentemente las flechas o la barra espaciadora). Haciendo este un salto desde una posición 80;405 hasta la posición 80;329.
Muchas gracias de antemano.

PD: Os adjunto el programa
     https://mega.co.nz/#F!990DGTLQ!VD23Iru4mNk46-EJ0-d2vA

Mod: Titulo modificado, no usar mayusculas, procura que sea descriptivo al problema "ayuda" no aporta ninguna característica

Brian1511

#1
Bueno puedes modificar el TOP del control es muy sencillo:

Este codigo es para VB.Net ya que vi tu Source y no es de VB6.
Hay una sección para VB.Net te recomiendo que la busques para la proxima para no tener futuros problemas en el foro! ;)

Código (vb) [Seleccionar]

Private Sub Timer1()

Picture1Box.Top = Picture1Box.Top - 50
If Picture1Box.Top = 329 then
Timer1.Enabled = False
End If

End Sub


Esto seria una animacion basica con un Timer y Un PictureBox, puedes modificar el Intervalo del Timer para cambiar la rapidez con la que la animacion se efectua.

Espero que sea lo que necesites.

PD: Un consejo, tus proyectos no los publiques haci por haci ya que hay muchos urtadores que pueden tomar tu idea, mejor comparte el codigo que necesites que te asistan.

Saludos~



Creador de BrainMind


79137913

HOLA!!!

Hay un pequeño problema con el codigo que propone Brian1511, si el Picturebox nunca llega a 329 nunca se frenara el timer, esto se soluciona colocando un > en vez de un = en el codigo.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Brian1511

#4
cierto muy cierto ;). Gracias por corregir!

David977 El codigo quedaria así:

Código (vb) [Seleccionar]

   Private Sub Timer1()
   
   Picture1Box.Top = Picture1Box.Top - 50
   If Picture1Box.Top > 329 then
   Timer1.Enabled = False
   End If
   
   End Sub
 


Saludos!



Creador de BrainMind

79137913

HOLA!!!

Pusiste de nuevo el mismo codigo...

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Brian1511




Creador de BrainMind

79137913

HOLA!!!

Jajajaja, viste la hora de mi post y la hora de tu modificacion... :silbar:

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Brian1511

Shhhh!!! no lo escribas , se daran cuenta xD  ;D



Creador de BrainMind

David977

Gracias por vuestras respuestas pero no consigo hacer el movimiento que deseo. Salta, muy lento, y también necesito que al chocarse con los obstáculos no los atraviese. Alguien me haria el favor de hacerme el código porfavor ???

PD: Os adjunto el programa:
      https://mega.co.nz/#F!990DGTLQ!VD23Iru4mNk46-EJ0-d2vA

y aquí el código:

Public Class frmPantalla


    Private WithEvents timerSalto As New Timer With {.Enabled = False, .Interval = 50}
    Private totalUnidades As Integer = 0
    Private unidadesActuales As Integer = 0
    Private salto As estadoSalto = estadoSalto.Terminado

    Private Enum estadoSalto
        Subiendo
        Bajando
        Terminado
    End Enum

    Private Enum unidadesSalto
        Setenta
    End Enum

    Private Sub tmrSalto_Tick() Handles tmrSalto.Tick
        tmrSalto.Interval = Location.Y + 40
        Select Case salto
            Case estadoSalto.Bajando
                unidadesActuales = unidadesActuales - 10
                Dim localizacionX As Integer = Cuadrado.Location.X + 6
                Dim localizacionY As Integer = Cuadrado.Location.Y + 10
                Cuadrado.Location = New Point(localizacionX, localizacionY)
                If unidadesActuales = 0 Then
                    salto = estadoSalto.Terminado
                End If
            Case estadoSalto.Subiendo
                unidadesActuales = unidadesActuales - 10
                Dim localizacionX As Integer = Cuadrado.Location.X + 3
                Dim localizacionY As Integer = Cuadrado.Location.Y - 10
                Cuadrado.Location = New Point(localizacionX, localizacionY)
                If unidadesActuales = 10 Then
                    unidadesActuales = totalUnidades
                    salto = estadoSalto.Bajando
                End If
            Case estadoSalto.Terminado
                tmrSalto.Stop()
        End Select

    End Sub

    Private Sub saltoCuadrado(unidades As unidadesSalto)
        Select Case unidades
           
            Case unidadesSalto.Setenta
                totalUnidades = 70
                unidadesActuales = 70

        End Select
        salto = estadoSalto.Subiendo
        tmrSalto.Start()
    End Sub

    Private Sub frmPantalla_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Space Then
            If salto = estadoSalto.Terminado Then
                saltoCuadrado(unidadesSalto.Setenta)
            End If
        End If
    End Sub
End Class