grafik begrenzung

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von kossseba.

    grafik begrenzung

    ich muss in ein pong spiel einbauen, dass der ball (picturebox1) an den wänden abprallt. nur irgendwie bekomm ich das nicht hin und mein infolehrer gibt uns keine hilfestellung, obwohl keiner was checkt. hat einer nen tipp für mich?
    das klappt so nich... bis jetzt hab ich ja das die pictureboc sich nach rechts bewegt

    PictureBox1.Left = PictureBox1.Left + 20

    damit geht die box nach rechts... nur jetzt soll sie wenn die box den rand von form1 erreicht wieder umdrehen. also dann könnte ich theoretisch ja die +20 durch ne variable ersetzen und die umdrehen. nur wie frage ich ab, das die bax am rand von form1 is?
    Die Form und die Picturebox haben eine Position und eine Größe, wenn PictureBox.Left + Picturebox.width größer als Form.width sind, hast du den rechten Rand erricht...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    okay. das hab ich jetzt soweit... nur wenn sie den rand erreicht geht sie nur minimal hin und her, obwohl vom text her die box nach links gehen müsste. hier mein code für den timer:

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Dim x As Integer = 20
    Dim y As Integer = -20

    PictureBox1.Left = PictureBox1.Left + x

    If PictureBox1.Left + PictureBox1.Width > Me.Width Then
    PictureBox1.Left = PictureBox1.Left + y
    End If




    End Sub
    Hi,

    so funzt das net. Du musst die Schrittweite "umdrehen" (mit -1 multiplizieren), und darfst si nicht sofort wieder ändern wenn die Entfernung zum rechten Rand größer wird.

    VB.NET-Quellcode

    1. Option Explicit
    2. Dim steps as integer
    3. Private Sub Form_Load()
    4. steps = 20
    5. End Sub
    6. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    7. PictureBox1.Left = PictureBox1.Left + steps
    8. If (PictureBox1.Left + PictureBox1.Width) > Me.Width Then
    9. steps = steps * -1
    10. End If
    11. End Sub


    Das Beispiel soll nur eine Hilfestellung sein. Es wird ausschließlich der rechte Rand berücksichtigt! Die anderen Seiten, sowie Winkel solltest Du mal alleine probieren.

    bye ...

    LaMa5.

    EDIT:
    Ich sehe grad, dass es sich um .Net handelt. Der Code ist nicht getestet und wird unter Umständen unter .Net nicht laufen. Das Prinzip ist dort aber das Gleiche.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()