Wenn Rectangle damit eine Schnittmenge bildet soll er nach Rechts, und wenn er damit eine Schnittmenge bildet soll er nach Links

  • VB.NET

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

    Wenn Rectangle damit eine Schnittmenge bildet soll er nach Rechts, und wenn er damit eine Schnittmenge bildet soll er nach Links

    Hallo!

    Ich hab ein sehr kleines Problem:

    Und zwar versuch ich grad, dass wenn der Bot eine Wand berührt nach Links soll,und wenn es die Wand an der linken Seite
    berührt wieder nach Rechts soll, und wenn er die Wand der rechten Seite berührt nach Links soll ETC...

    Ich versuch's so:

    VB.NET-Quellcode

    1. Dim Kollidiert As Boolean = False
    2. If Monster.IntersectsWith(WandLinks) Then
    3. Kollidiert = True
    4. End If
    5. If Kollidiert = True Then
    6. PositionX += 1
    7. ElseIf Kollidiert = False Then
    8. PositionX -= 1
    9. End If


    Doch diesesmal ist es so,
    dass 1 - 1 + 1 - 1 = 0 ist .- ...
    Also animiert er sich nicht nach Rechts...

    Er zappelt nur herum...

    Hoffe auf Antworten...


    EDIT:Hab grad gemerkt, dass das IF gar nicht beachtet wird ...
    Obwohl Kollidiert = True ist, wird Kollidiert = False gewertet O : ...
    Und Kollidiert = True auch,deswege das Zappeln...

    Weiß wer woran das liegt?
    Ist das ein Bug ?
    Mfg.eniking1998

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

    Fang an objektorientiert zu denken.Dein Spielbrett ist ein Objekt, deine Wandbausteine sind Objekte, deine Spieler (ob Gegner oder nicht) sind Objekte. Alle diese Objekte können in Klassen gekapselt werden.
    Diese Klasse enthält jeweils die Regeln (Methoden, Funktionen und Ereignisauslöser), die für Ihre Funktion wichtig sind. So können die Spielsteine Methoden wie "Gehe rauf", "Gehe nach rechts" usw. bekommen. Wie die Figur des macht, weis nur sie selbst. Sie muß auch die Hindernisse (Wandbausteine mit Ihren Propertys Position und Größe) erkennen und entsprechend reagieren. Ein Bild als Property im Spielstein hinterlegt kennzeichnet die Figur als Gegner oder Sopieler 1, 2...
    Dann könnte es eine Klasse "Steuerung" geben, die je nachdem um was fürne Figur es sich handelt den Bewegungsbefehl von der Tastatur an den Spielstein übermittelt oder per Zufall eine Bewegungsrichtung z.B. für den Gegnerstein auslöst (Die neue Bewegungsinfo sollte durch ein Ereignis des Spielsteines "Kollision" erzeugt werden).
    Fang mit einer solchen Klassenstruktur an und verfeinere sie Schritt für Schritt, dann kommst du schnell dahinter.


    Heißt, arbeite richtig mit eigenen Klassen etc.
    Oh my God...

    Hab das Problem gelöst:

    Das musste eine globale Deklaration sein...

    Funktioniert...

    EDIT:
    @programmer71
    Was glaubst Du was ich tu?...

    Ich bastel mir grad eine kollisionsberechnende Klasse...
    Ich dachte das sei ein Bug ...

    Man musste es nur global Deklarieren...

    Mfg.eniking1998

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

    enIking1998 schrieb:

    VB.NET-Quellcode

    1. If Kollidiert = True Then
    2. PositionX += 1
    3. ElseIf Kollidiert = False Then
    4. PositionX -= 1
    5. End If
    ein Boolean-Boolean-Test ist nicht nötig:

    VB.NET-Quellcode

    1. If Kollidiert Then
    2. PositionX += 1
    3. Else
    4. PositionX -= 1
    5. End If
    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!