Kollisionsabfrage mit Zeichnung?

  • VB.NET

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

    Kollisionsabfrage mit Zeichnung?

    Hallo,
    Und zwar fange ich gerade mit Visual Basic an und programmiere ein kleines Spiel. Dabei habe ich jedoch das Problem, dass ich nicht weiß, wie ich eine Kollisionsabfrage zwischen einer Zeichnung und der anderen zu machen. Alles, was ich weiß ist, dass ich es irgendwie mit Funktionen lösen kann, hab aber keine Lösung gefunden. Kann mir jemand dabei helfen? (am besten mit Beispiel)
    Hier sind beide Zeichnungen, die sich auch bewegen können, ich brauche nur die Kollisionsabfrage zwischen den beiden.
    Danke im Vorraus :thumbsup:

    VB.NET-Quellcode

    1. Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    2. 'PLAYER'
    3. '------'
    4. Dim player As Graphics = e.Graphics ' p = pinsel & s = stift
    5. Dim sred As New Pen(Color.Red, 2)
    6. Dim pred As New SolidBrush(Color.Red)
    7. Dim pblack As New SolidBrush(Color.Black)
    8. Dim pgrau As New SolidBrush(Color.Red)
    9. 'KÖRPER'
    10. player.FillEllipse(pred, player1.X, player1.Y, 100, 100)
    11. 'MUND'
    12. player.FillEllipse(pblack, player1.X, player1.Y, 100, 50)
    13. player.FillEllipse(pgrau, player2.X, player2.Y, 50, 25)
    14. 'AUGE'
    15. Dim sblack As New Pen(Color.Black, 2)
    16. player.DrawLine(sblack, player3.X, player3.Y, player5.X, player5.Y) 'Y-Achse um -23p verschoben
    17. player.FillEllipse(pblack, player4.X, player4.Y, 10, 10)
    18. 'FRUIT'
    19. '-----'
    20. Dim Obst As Graphics = e.Graphics
    21. Obst.FillEllipse(pred, Fruit1.X, Fruit1.Y, 60, 60)
    22. Obst.DrawLine(sblack, Fruit2.X, Fruit2.Y, Fruit3.X, Fruit3.Y)
    23. End Sub
    Das Thema hatten wir erst: Diskussion zum Thema Kollision und Reflexion - Elastischer Stoß

    Schau mal ob du da was von ableiten kannst.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    TastyBoba schrieb:

    Hier sind beide Zeichnungen, die sich auch bewegen können, ich brauche nur die Kollisionsabfrage zwischen den beiden.
    Sorry - ich sehe keine einzige Zeichnung (im Sinne eines zu zeichnenden-Objektes), daher vollkommen unklar, was du mit "Kollisionsabfrage zwischen den beiden" meinen können mögest.

    DEr Code zeigt nur, wie verschiedene Objekte (player1, player2, 3 und fruits-dingense) gezeichnet werden - aber eben der Klassen-Code dieser Objekte bleibt ungezeigt.
    Die Kollisions-Abfrage wird sich aber wohl auf diesen Klassen-Code beziehen müssen.
    @TastyBoba Willkommen im Forum. :thumbup:
    Du hast da ein sehr schönes Beispiel gewählt, wo Du sofort eie der wichtigsten Grundsätze der objektorientierten Programmierung lernen und beherzigen kannst:
    Trennung von Daten und GUI.
    Mit Daten wird gerechnet, die GUI zeigt Daten an und gestattet ihre Bearbeitung.
    Das fängt an, dass Du um Deine Player eine Klasse baust, wo alles drin steht, was so einen Player ausmacht: Position, Größe, Farbe, Geschwindigkeit, ...
    Und ein Player sollte sich allein malen können, d.h., in der Form-Paint-Routine rufst Du die Player-Paint-Routine aller Player auf und gibst ihnen lediglich das Graphics-Objekt mit.
    Wenn das klar ist, überlegst Du Dir, was da ühaupt passieren soll.
    Was soll passieren, wenn zwei Player kollidieren?
    Erst wenn das klar ist, hat es Zweck, über eine Kollisionsabfrage nachzudenken.
    Und dann reden wir weiter.
    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!