Ich brauche Hilfe bei einem Minispiel :-)

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Ich brauche Hilfe bei einem Minispiel :-)

    Guten Abend, ich habe ein kleines Problem, also ich sitze gerade an einem kleinen Minispiel und musste wegen einem Fehler alles nochmal neu machen :( und seitdem ich meinen neuen Codes benutze funktioniert er nicht mehr richtig:

    VB.NET-Quellcode

    1. Private Sub Level_1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. If e.KeyCode = Keys.A Then
    3. Dim x As Integer = Me.Player.Location.X, y As Integer = Me.Player.Location.Y
    4. Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Left_1.png")
    5. x -= 5
    6. y += 0
    7. Player.Location = New Point(x, y)
    8. End If
    9. If e.KeyCode = Keys.D Then
    10. Dim x As Integer = Me.Player.Location.X, y As Integer = Me.Player.Location.Y
    11. Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Right_1.png")
    12. x += 5
    13. y += 0
    14. Player.Location = New Point(x, y)
    15. End If
    16. If e.KeyCode = Keys.S Then
    17. Dim x As Integer = Me.Player.Location.X, y As Integer = Me.Player.Location.Y
    18. Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Front_1.png")
    19. x -= 0
    20. y += 5
    21. Player.Location = New Point(x, y)
    22. End If
    23. If e.KeyCode = Keys.W Then
    24. Dim x As Integer = Me.Player.Location.X, y As Integer = Me.Player.Location.Y
    25. Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Back_1.png")
    26. x -= 0
    27. y -= 5
    28. Player.Location = New Point(x, y)
    29. End If


    Es könnte sein dass, ich vielleicht einen kleinen Fehler gemacht habe aber ich bin dennoch zu blöd ihn zu finden.
    Danke im vorraus

    LG ;)
    was genau heisst denn "funktioniert" nicht mehr? Fehlermeldung?
    was mir auffällt ist dein "dim x...."
    zum einen das Komma..
    zum anderen.. nimm diese Zeile überall raus und trage sie EIN MAL zwischen Zeite 1 und 2 ein
    also

    Quellcode

    1. Private Sub Level_1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. Dim x As Integer = Me.Player.Location.X
    3. Dim y As Integer = Me.Player.Location.Y
    4. If e.KeyCode = Keys.A Then
    5. .....
    heist deine PicBox denn "Player" ?
    was passiert wenn du -unabhängig vom keycode sie einfach mal in der Routine auf 0,0 setzt.
    denn evtl wird dein Keydown-Routine nicht aufgerufen wird.

    wenn deine control "Level_1" heisst, müsste am ende auch handles Level_1.keydown stehen

    schmeiß doch einfach mal ein "beep" in die Routine, wenn du dann was hörst wenn ne Taste gedrückt wird, ok,
    wenn nicht, bist du schon nah am Übeltäter dran.
    Du solltest dir jetzt (nur für dich alleine) schon mal kurz die Zeit nehmen, und schauen, wo nun die Unterschiede sind,
    also WAS schief gelaufen ist.
    Heute war es ein einfaches Projekt, bei dem man "mal schnell" dem Code woanders hinpacken kann.
    Morgen haste Zig Classen und Zig controls, da geht das dann nicht mehr.
    Und dann wäre es gut, z.b. den Fehler von heute ausschließen kannst.

    Kein Muss :) Aber schaden tut es nichts, denn was du dabei heute lernen wirst (wenn du die Ursache findest) vergisst du so schnell nicht mehr.
    (KlugscheissMode = Ende) :)
    @Toromino Sieh Dir mal dies an:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Level_1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
    2. Dim x As Integer = Me.Player.Location.X
    3. Dim y As Integer = Me.Player.Location.Y
    4. Select Case e.KeyCode
    5. Case Keys.A
    6. Me.Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Left_1.png")
    7. x -= 5
    8. y += 0
    9. Case Keys.D
    10. Me.Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Right_1.png")
    11. x += 5
    12. y += 0
    13. Case Keys.S
    14. Me.Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Front_1.png")
    15. x -= 0
    16. y += 5
    17. Case Keys.W
    18. Me.Player.BackgroundImage = Image.FromFile("\Textures\32x32\Player\Back_1.png")
    19. x -= 0
    20. y -= 5
    21. End Select
    22. Me.Player.Location = New Point(x, y)
    23. End Sub
    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!

    Toromino schrieb:

    Case
    Kopier Dir folgendes Beispiel in eine Form mit einem Button oder Du siehst mal bei der MSDN vorbei:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. For i = 1 To 7
    3. Select Case i
    4. Case 1, 3, 5
    5. MessageBox.Show("ungerade: " & i.ToString)
    6. Case 2, 4, 6
    7. MessageBox.Show("gerade: " & i.ToString)
    8. Case Else
    9. MessageBox.Show("sonst: " & i.ToString)
    10. End Select
    11. Next
    12. End Sub
    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!
    Ich würde das mit dem Select Case eher als vereinfachte Version von einem Konstrukt à la:

    VB.NET-Quellcode

    1. ​If A = 0 Then
    2. '...
    3. ElseIf A = 1 Then
    4. '...
    5. ElseIf A = 2 Then
    6. '...
    7. End If

    sehen. Dieses Beispiel sähe dann in nem Select-Case-Konstrukt so aus:

    VB.NET-Quellcode

    1. ​Select Case A 'die Variable
    2. Case 0 'wenn A = 0
    3. '...
    4. Case 1 'wenn A = 1
    5. '...
    6. Case 2 'wenn A = 2
    7. '...
    8. End Select
    @Artentus Jou.
    @Toromino Pack die Bilder in die Ressourcen, da hast Du ohne sie explizit laden zu müssen einen geordneten Zugriff drauf.
    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!