2D Sprung

  • VB.NET

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von Gelöschter Benutzer.

    Dein Ansatz ist falsch ... falls du ein "Spiel" schreiben willst.

    quick and dirty:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Const besch As Integer = 2 ' Beschleunigung
    3. Private Const stoss As Integer = 4 ' Stossabsorption am Boden
    4. Private gesch As Integer ' aktuelle Fall/Steiggeschwindigkeit
    5. Private WithEvents tm As New Windows.Forms.Timer
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. tm.Interval = 30
    8. tm.Enabled = False
    9. End Sub
    10. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    11. If Not tm.Enabled Then
    12. tm.Enabled = True
    13. gesch = 0
    14. End If
    15. End Sub
    16. Private Sub tm_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tm.Tick
    17. Dim ziel As Integer = Button1.Top
    18. gesch += besch
    19. ziel += gesch
    20. If ziel + Button1.Height > Me.ClientRectangle.Height Then
    21. ziel = Me.ClientRectangle.Height - Button1.Height
    22. gesch = 0 - (gesch - stoss)
    23. End If
    24. Button1.Top = ziel
    25. If gesch = 0 AndAlso Button1.Top = (Me.ClientRectangle.Height - Button1.Height) Then
    26. tm.Enabled = False
    27. Debug.Print("done")
    28. End If
    29. End Sub
    30. End Class

    Button1_click schrieb:

    Ich meine z.b. wenn ich die Oben-Taste drücke springt es hoch und fliegt eben wieder runter.

    Dann setze das Object auf den "Boden" und setze die Anfangsgeschwindikgeit auf einen negativen Wert.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Const besch As Integer = 2 ' Beschleunigung
    3. Private Const stoss As Integer = 3 ' Stossabsorption am Boden
    4. Private gesch As Integer ' aktuelle Fall/Steiggeschwindigkeit
    5. Private WithEvents tm As New Windows.Forms.Timer
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. tm.Interval = 30
    8. tm.Enabled = False
    9. Button1.Top = Me.ClientRectangle.Height - Button1.Height
    10. End Sub
    11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    12. If Not tm.Enabled Then
    13. tm.Enabled = True
    14. gesch = -20
    15. End If
    16. End Sub
    17. Private Sub tm_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tm.Tick
    18. Dim ziel As Integer = Button1.Top
    19. gesch += besch
    20. ziel += gesch
    21. If ziel + Button1.Height > Me.ClientRectangle.Height Then
    22. ziel = Me.ClientRectangle.Height - Button1.Height
    23. If Math.Abs(gesch) - stoss < 0 Then
    24. gesch = 0
    25. Else
    26. gesch = 0 - (gesch - stoss)
    27. End If
    28. End If
    29. Button1.Top = ziel
    30. If gesch = 0 AndAlso Button1.Top = (Me.ClientRectangle.Height - Button1.Height) Then
    31. tm.Enabled = False
    32. Debug.Print("done")
    33. End If
    34. End Sub
    35. End Class
    ok also etwa mit:
    KeyDown -> druck = true
    KeyUp -> druck = false
    (egal welche taste...)
    So könnte es gehen oder?
    (Ich versuche einen Code: )

    VB.NET-Quellcode

    1. Dim keyleft As Boolean = False
    2. Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles Me.KeyUp
    3. If e.KeyData = Keys.Left Then
    4. keyleft = False
    5. End If
    6. End Sub
    7. Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
    8. If e.KeyData = Keys.Left Then
    9. keyleft = True
    10. End If
    11. End Sub



    So etwa?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gelöschter Benutzer“ ()