"Du hast Gewonnen" | springende Picturebox

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hammerdollen.

    "Du hast Gewonnen" | springende Picturebox

    Guten Tag :)

    Mit meinem Sokoban-Klon komme ich derzeit recht gut vorran.

    Nun wollte ich noch ein kleines Extra hinzufügen:

    Und zwar soll, nachdem der Spieler alle Level gemeistert hat, eine PictureBox mit einem Bild, auf welchem so etwas wie: Herzlichen Glükwunsch. Du hast gewonnen steht, wie bei Solitaire auf und ab richtung rechte Seite hüpfen, dabei immer etwas an höhe verlieren, und sobald die Position der Picturebox dann den X-Wert der Höhe der Form hat, stoppen.

    Ich habe schon gehört, dass man dies gut mit einem Time realisieren kann. Hat jemand einen Vorschlag? (Während dessen probiere ich ein bisschen daran rum :D)


    Hier ein kleiner Ansatz:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim startpos As Point
    3. Dim currentpos As Point
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. startpos = New Point(0, 0)
    6. Timer1.Interval = 3000
    7. Timer1.Start()
    8. Ball.Location = startpos
    9. currentpos = startpos
    10. End Sub
    11. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    12. Dim i As Integer
    13. For i = 0 To 1000
    14. currentpos = New Point(i, 4)
    15. Ball.Location = currentpos
    16. Next
    17. End Sub
    18. End Class


    Fehler vorhanden, berichtige grad den Intervall :)

    es handelt sich NUR um einen ANSATZ ( habe noch nie zuvor mit dem Timer gearbeitet)


    hammerdollen :)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „hammerdollen“ ()

    also die Picturebox steuerst du zum auf und ab bewegen mit .Top = ** und die seidwertsbewegung mit .Left = ** ahmund dann schreibst du einfach ins timer tick event das die Pictureboxsich nach oben bewegen soll also immer um eins dann reicht es hinzuschreiben .Top += 1 fertig und dann überprüfst du einfach ob die picbox schon hoch genug gesprungen ist und änderst den wert in -1 dann fällt sie wieder runter und das selbe machst du dann mit der seidwärtsbewegung ;)

    mfg
    überarbeiteter Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim i1 As Integer = 1
    3. Dim i2 As Integer = 1
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. Timer1.Interval = 500 ' setzt den Timer-Intervall (hier 1 Sekunde)
    6. End Sub
    7. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    8. Call check()
    9. Ball.Left = Ball.Left + (i1) ' Abstand des Balls vom linken Fensterrand
    10. Ball.Top = Ball.Top + (i2) ' Abstand des Balles vom oberen Fensterrand
    11. 'Quadtratische Funktion -> f(x)=x² (Normaparabel)
    12. i1 = i1 + 1
    13. i2 = i1 ^ 2
    14. End Sub
    15. Private Sub start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles start.Click
    16. Timer1.Start() 'Startet den Timer bei einem Klick auf den Button
    17. End Sub
    18. Private Sub check()
    19. If Ball.Location.Y + 130 >= Me.Height Then 'Überprüft, ob der Ball den unteren Fensterrand berührt/überschreitet
    20. Timer1.Stop()
    21. MsgBox("Der Ball hat das Fenster verlassen")
    22. End If
    23. End Sub
    24. Private Sub ballplatzieren_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ballplatzieren.Click
    25. i1 = 1
    26. i2 = 1
    27. ' Variable Ausgangsposition des Balles
    28. Ball.Left = startpos_x.Text
    29. Ball.Top = startpos_y.Text
    30. End Sub
    31. End Class


    Nun möchte ich, dass wenn der Ball den unteren Bildschirmrand berührt, wieder nach oben springt (immer und immer wieder) und jedesmal ein stück an Höhe verliert. wie ein richtiger Ball eben :)


    Ratschläge gesucht :D

    Gruß
    Hallo,

    @VorVorposter: find ich nicht sooo schön..

    PseudoCode

    Quellcode

    1. Bewegung = 10
    2. Bewegung *= 0.9
    3. TOP += Bewegung
    4. WENN TOP <= ENDE(BODEN)
    5. Bewegung *= -1

    somit wird die PB bei der Aufwärtsbewegung langsamer und sollte bei der Abwärtsbewegung wieder schneller werden...(habs zwar nicht getestet, aber so ähnlich sollte es funktionieren
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---