Neu in VB und brauche Hilfe mit dem Code hier

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcel1997.

    Neu in VB und brauche Hilfe mit dem Code hier

    Hallo Forum,
    Ich bin neu hier und auch neu in visual Basic ich hab vor einer Woche damit angefangen und probier mich jetzt an einem kleinen Projekt denn ich will ein Spiel programmieren, wo 2 Spieler( momentan nur 1er) durchs Spielfeld fahren und eine Spur legen welche bei berühren das Verlieren bedeutet. Ich hab es mir einfach so in den Kopf geschlagen und bin jetzt schon mehrere Stunden aktiv dran. Doch nun verstehe ich nicht wie man das genau hinkriegt zur Verdeutlichung habe ich den Code hier angebracht aber bis jetzt habe ich es nur so programmiert das die Figur sich bewegt aber noch keine Spur legt, aber sie will sich nicht mal bewegen ich habe ein Test Projekt schnell angefangen wo ich es einfach versuche und dort funktioniert es und ich reiße mir schon langsam die Haare raus weil ich es einfach nicht packe. Ich hoffe irgendwer kann mir helfen und mir ein Grundgerüst zeigen womit ich etwas anfangen kann.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    3. If e.KeyCode = Windows.Forms.Keys.Up Then
    4. TimUp.Enabled = True
    5. ElseIf e.KeyCode = Windows.Forms.Keys.Down Then
    6. TimDown.Enabled = True
    7. ElseIf e.KeyCode = Windows.Forms.Keys.Left Then
    8. TimLeft.Enabled = True
    9. ElseIf e.KeyCode = Windows.Forms.Keys.Right Then
    10. TimRight.Enabled = True
    11. End If
    12. ' Aktiviert mit den Pfeiltasten die Timer
    13. End Sub
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. cmdButton.Enabled = False
    16. cmdStop.Enabled = False
    17. cmdPlayer1L.Enabled = False
    18. cmdPlayer1R.Enabled = False
    19. cmdPlayer1O.Enabled = False
    20. cmdPlayer1U.Enabled = False
    21. cmdPlayer2L.Enabled = False
    22. cmdPlayer2R.Enabled = False
    23. cmdPlayer2O.Enabled = False
    24. cmdPlayer2U.Enabled = False
    25. ' Stop und "folgt..." Buttons können nicht zu start betätigt werden und Die Buttons zur Steuerung werden nicht anklickbar
    26. End Sub
    27. Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
    28. cmdStart.Enabled = False
    29. cmdEnde.Enabled = False
    30. cmdStop.Enabled = True
    31. ' Buttons Start und Ende werden deaktiviert und der Button Stop aktiviert
    32. End Sub
    33. Private Sub cmdStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStop.Click
    34. TimLeft.Enabled = False
    35. TimRight.Enabled = False
    36. TimDown.Enabled = False
    37. TimUp.Enabled = False
    38. cmdStart.Enabled = True
    39. cmdEnde.Enabled = True
    40. cmdStop.Enabled = False
    41. ' Bei Stop werden alle Timer sowie der Button selber deaktiviert und Start + Ende Button werden aktiviert
    42. End Sub
    43. Private Sub cmdEnde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEnde.Click
    44. Me.Close()
    45. ' Schließt die Anwendung
    46. End Sub
    47. Private Sub TimLeft_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimLeft.Tick
    48. panMove.Location = New Point(panMove.Location.X - 5,
    49. panMove.Location.Y)
    50. If TimRight.Enabled = True Then
    51. TimRight.Enabled = False
    52. ElseIf TimDown.Enabled = True Then
    53. TimDown.Enabled = False
    54. ElseIf TimUp.Enabled = True Then
    55. TimUp.Enabled = False
    56. End If
    57. ' Bewegt das Panek nach links
    58. End Sub
    59. Private Sub TimRight_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimRight.Tick
    60. panMove.Location = New Point(panMove.Location.X + 5, panMove.Location.Y)
    61. If TimLeft.Enabled = True Then
    62. TimLeft.Enabled = False
    63. ElseIf TimDown.Enabled = True Then
    64. TimDown.Enabled = False
    65. ElseIf TimUp.Enabled = True Then
    66. TimUp.Enabled = False
    67. End If
    68. ' Bewegt das Panel rechts
    69. End Sub
    70. Private Sub TimDown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimDown.Tick
    71. panMove.Location = New Point(panMove.Location.X, panMove.Location.Y + 5)
    72. If TimUp.Enabled = True Then
    73. TimUp.Enabled = False
    74. ElseIf TimRight.Enabled = True Then
    75. TimRight.Enabled = False
    76. ElseIf TimLeft.Enabled = True Then
    77. TimLeft.Enabled = False
    78. End If
    79. ' Bewegt das Panel unten
    80. End Sub
    81. Private Sub TimUp_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimUp.Tick
    82. panMove.Location = New Point(panMove.Location.X, panMove.Location.Y - 5)
    83. If TimDown.Enabled = True Then
    84. TimDown.Enabled = False
    85. ElseIf TimRight.Enabled = True Then
    86. TimRight.Enabled = False
    87. ElseIf TimLeft.Enabled = True Then
    88. TimLeft.Enabled = False
    89. End If
    90. ' Bewegt das Panel oben
    91. End Sub
    92. End Class


    Schöne Grüße, RayJay

    *Topic verschoben*
    Bitte beim nächsten Mal einen vernünftigen Titel wählen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Also, erstmal: Spiele programmiert nicht mit Controls, sonder mit einer GameEngine.

    Außerdem, wenn du erst seit einer Woche programmierst, dann ist gleich ein komplettes Spiel vielleicht doch ein bisschen zuviel. Womit hast du denn gelernt? Mit YouTube oder einem Buch (wenn ja, welches)?

    Zur Lösung deines Problems: Du musst die Spur zeichnen, z.B. mit GDI+. Und dann kannst du auch einfach gleich das komplette Spiel damit zeichnen, denn dann läuft es performanter und es ist sogar noch viel einfacher als mit Controls. Zudem musst du eben bei einer Bewegung des Spielers "mitschreiben", wo er schon war, damit du dann eben eventuelle Kollisionen feststellen kannst.

    Hier ist ein gutes GDI+-Tutorial: [Tutorial] GDI+
    GDI+ ist meiner Meinung nach auch nix. Hab mal ein kleines Sample programmiert zu ner Gegner KI die einen verfolgen soll und 30 fps und das haut nicht richtig hin mit der Darstellung. Dauernd die Artefakte vom Neuzeichnen trotz Double buffering.
    Versuch dich an DirectX oder opengl
    Willkommen im Forum. :thumbup:

    RayJay schrieb:

    und auch neu in visual Basic
    1. Gib diesem Deinem Thread einen vernünftigen Namen (bitte editieren).
    2. Als Anfänger empfehle ich Dir, Dich zunächst mit Anfängerproblemen zu befassen, bis Du "warm geworden bist", gugst Du hier.
    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!
    Danke erstmal für die Antworten :)
    Ja ich weiß ein Spiel zum Anfang ist nicht grade das beste was man machen könnte doch muss ich meinen Kumpel retten der in einem Monat so ein Projekt auf die Reihe bringen muss und einfach null Ahnung hat und ich habe einfach Spaß dabei. Aber ich probiere mich einfach mal an GDI+ und schau obs was wird wenn ich es wirklich fertig kriegen werde kann ichs ja als Anhang hier reinstellen und ihr könnt mal gucken ob es einigermaßen ok ist :)

    Und Ich habe momentan viel Zeit also hab ich mir diesen Code hier durchs anschauen von anderen Threads angelernt ich finde so geht es am schnellsten.
    Ja aber als blutiger Anfänger, sollte man sich mit den Basics vertraut machen um den Code den man aus dem Forum fischt nicht nur auswendig
    zu können, sondern ihn auch zu verstehen. Das kommt so ein wenig rüber als ob du dir ein wenig Code zusammengeklickt hast und jetzt nicht weiter kommst.
    Deine Timer kann man schon gar nicht mehr Timer nennen, da diese einfach nur noch aufgerufen werden um das Control in die jeweilige Richtung zu bewegen.
    Danach werden sie direkt disabled.

    Schau dir mal im Forum an, wie andere Leute an so ein "Spiel" herangehen.
    Oder noch besser, mache dich mit den Basics vertraut.

    MfG Tim
    Also zu der sachr mit GDI+ kann ich nicht ganz zustimmen. Wenn man es vernünftig macht, dann läuft es (je nach rechner) eigentl8ch recht flüssig. Ich habe mal ein 2d Jump n run mit gdi gemacht. Dieser lief auf meinem Pc mit 80 - 100 fps. Auf den rechnern bei uns in der schule mit bis zu 40-60 fps. Also wenn man es richtig macht, dann läuft das schon flüssig. Ausserdem würde ich das als Anfänger auch erstmal mit GDI machen.

    Ich denke das schwierige ist nicht wirklich GDI sondern die Logik hinter deinem Spiel. und wie du das mit der Spur machen willst. Weil du schon darauf achten musst, das desto mehr Objekte existieren, desto länger braucht gdi zu rendern :)

    Lg Marcel