Re: Labyrinth darstellen
8. Jan 2004, 20:40
Hallo Getcool,
für die KI (das Routefinding) der Maus schlage ich dir folgendes vor: Erstelle einen Array of Integer in der Größe des Labyrinths, so dass zu jeder Kachel ein Integer gehört. Setzte alle diese Integer auf -1 (beispielsweise) und das Feld auf dem die Maus steht auf 0. Nun brauchst du eine Schleife die den Array so ausfüllt, dass in jedem Feld die Anzahl der Schritte steht, die das Feld im Labyrinth von der Maus entfernt ist. d.h. die Felder über, unter und neben der Maus bekommen eine 1, sofern keine Wand dazwischen ist usw...
Die Schleife könnte beispielsweise eine for-Schleife sein, wobei der Laufindex ich nenn ihn mal i,dann die Zahl ist, die überprüft werden muss und das geht so: In diese Schleife setzt du wieder zwei Schleife, um so alle Felder des Labyrinths durchzugehen. Steht in irgendeinem Feld die Zahl i, dann schaust du ob die umliegenden Felder (oben, unten, rechts, links) direkt von diesem Feld aus erreichbar sind (d.h. keine Wand ist dazwischen) und ob darin noch keine Zahl steht, die kleiner als i ist. Ist dies der Fall, schreibst du in die entsprechenden Felder die Zahl i+1. Nach Maximal 2500 Durchläufen ist das ganze Labyrinth mit diesen Zahlen gefüllt, wobei die nicht erreichbaren Felder immernoch -1 enthalten.
Der Kürzeste Weg zum Ausgang lässt sich dann so finden: Starte bei der Betrachtung des Wegs beim Ausgang. Gehe nun auf das benachbarte Feld, dessen Wert um 1 kleiner ist als auf diesem Feld... usw. Irgendwann kommst du dann bei der Maus an.
Das ganze ist natürlich eigentlich keine KI, sonder Routefinding, d.h. wenn die Aufgabe ist, eine Maus zu programmieren, die nicht das ganze Labyrinth kenn, sondern nur den Teil, wo sie schon war, dann musst du es anders machen.
Grüße
Seniman
|