WIe kann man im programm "Lazarus" eine kollision umgehen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Gegnet müssen kollidieren. Wie im richtigen Leben knallt es wenn man gegen eine Wand rennt.

Du schteibdt eine Kollisionsroutine fur Spielbare und nicht spielbare Figuren. Also eine für alles. Der gibt man die aktuelle Position und die Zugrichtung. Dann schaut die nach ob an den Koordinaten plus einen Schritt weitet eine Wand ist oder nicht. Ist eine Wand im Weg gibt die Funktion true zurück, meldet aldo eine bevorstehende Kollision.Bei der Spielfigur macht man also eine Schleife in der zuerst mit der Kollisionsfunktion die durch Tasten vorgegebene Richtung grtedtet wird, bei False wird die Position nicht mehr verändert, nur bei True geht die Figur einen Schritt weiter. 

 

  Bri Computergegnern gibt es keine Tasten. Hier nimmt man eine Variable für die Richtung. Die Figur rennt ewig in der ein mal vorgegebenen Richtung. Meldet die Kollisionsabfrage true. Schaltet man die Richtung um.Das macht man in einerr Schleife.

 

Bevor also eine Computergesteuerte Figur an eine Wand knallt, dreht die sich dann nach Links. Geht das auch nicht, dreht sie sich noch mal nach Links, läuft dann also zurück.

Verfeinern kann man das, in dem die sich bei der ersten Kollision der Schleife nach links dreht, bei der zweiten um 180° (rechts) und bei der dritten nach rechts. So läuft die bevorzugt nach links, geht das nicht nach rechts und wenn das auch nicht geht (Sackgasse) wieder zurück.

Bei einem richtigen Labyrinth gibt es eine garantierte Möglichkeit von einem Ende zum andern zu gelangen. Bei jeder Abzweigung immer links halten. Dazu einfach eine zweite Routine schreiben die Abzweigungen erkennt und nach Möglichkeit links abbiegt. So findet der Computer garantiert durch das Labyrinth.

Das kann man auch wieder verfeinern. Bei jedem Versuch Position und Richtung merken. Hat man die alte Position wieder erreicht, war der weg irreführend und ein anderer muß ausprobiert werden. Das kann man in einer Schleife machen zwischen den Spielzügen. So weiß der Computer, dass der mögliche Weg nichts bringt und ein anderer probiert werden muß. Führt der zumausgang macht die Figur dann einen Schriott in diese Richtung und man macht das Ganze beim nächsten Spielzug erneut. So geht die Figur zielstrebig zumAusgang. Ein gegner würde statt Ausgang dann die Position des Heldens zum Ziel nehmen

Wie sorgst du denn dafür, dass die Spielerfigur nicht durch eine Wand laufen kann?

Tipp: Such mal nach einer Open-Source-Version des Spieleklassikers Pac Man. (Ist allerdings nur eine Vermutung von mir, dass so was existiert.)

Was möchtest Du wissen?