Figur bewegt sich nur horizontal aber nicht vertikal

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Figur bewegt sich nur horizontal aber nicht vertikal

    Hallo alle zusammen,
    ich bin im Moment über das verlängerte Wochenende (1.Mai ist frei, 2. Mai hat uns die Schule freigegeben :D) ein Spielchen zu erstellen das Pac-Man recht ähnlich ist (bessere Grafik). Nun zu meinem Problem: die Figur (Smiley) bewegt sich nur nach Links und Rechts (A/D, Links/Rechts) wenn ich aber nun (W/S, Oben/Unten) drücke wird die Figur wieder in die linke obere Ecke gesetzt! Ich weis echt nicht mehr was ich machen soll.

    Quellcode

    1. Private Sub sgsce_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. If e.KeyCode = Keys.D Then
    3. Smiley.Location = New Point(Smiley.Location.X + 1)
    4. End If
    5. If e.KeyCode = Keys.A Then
    6. Smiley.Location = New Point(Smiley.Location.X - 1)
    7. End If
    8. If e.KeyCode = Keys.W Then
    9. Smiley.Location = New Point(Smiley.Location.Y + 1)
    10. End If
    11. If e.KeyCode = Keys.S Then
    12. Smiley.Location = New Point(Smiley.Location.Y + 1)
    13. End If
    14. If e.KeyCode = Keys.Right Then
    15. Smiley.Location = New Point(Smiley.Location.X + 1)
    16. End If
    17. If e.KeyCode = Keys.Left Then
    18. Smiley.Location = New Point(Smiley.Location.X - 1)
    19. End If
    20. If e.KeyCode = Keys.Up Then
    21. Smiley.Location = New Point(Smiley.Location.Y + 1)
    22. End If
    23. If e.KeyCode = Keys.Down Then
    24. Smiley.Location = New Point(Smiley.Location.Y + 1)
    25. End If
    26. End Sub


    Vielen Dank schon mal im Vorraus!
    wenn es in X-Richtung gehen soll, muss die ALTE Y-Richtung beibehalten, bzw. wiederverwendet werden.
    Smiley.Location = New Point(Smiley.Location.X + 1, Smiley.Location.Y)

    .. geht's in Y-Richtung muss der alte X-Wert wiederverwendet werden:
    Smiley.Location = New Point(Smiley.Location.X,Smiley.Location.Y + 1)

    oder anders ausgedrückt: du musst 2 Werte bei "New Point" übergeben.. nicht nur einen.
    New Point( X, Y)

    oder gleich schreiben
    Smiley.Location.X = Smiley.Location.X+1
    Smiley.Location.Y = Smiley.Location.Y+1

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RoulettePilot“ ()

    Christian Müller schrieb:

    was ich machen soll.
    Ich hab eben sehr gestaunt, dass es überhaupt eine Überladung von einem Point-Konstruktor mit nur einem Parameter gibt.
    Du musst im Falle eines Zweifels stets erst mal den Objektbrowser und die MSDN zu Rate ziehen, da wäre Dir sofort aufgefallen, dass es noch andere Konstruktoren gibt.
    Bilder
    • Point.png

      10,14 kB, 862×83, 131 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!