Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Weg von A nach B finden
MariaMaria - Sa 25.06.05 17:30
Titel: Weg von A nach B finden
Hallo Leute!
Wie kann ich für ein Spiel für meine Spielfigur möglichst schnell und effektiv den Weg vom aktuellen Punkt zu einem Zielpunkt berechnen?
Das Spielfeld besteht aus einzelnen Rechtecken, die entweder passierbar sind oder nicht. Die Spielfigur kann sich auf dem Spielfeld jeweils ein Kästchen in eine beliebige Richtung bewegen.
Das ganze könnte etwa so aussehen:
Delphi-Quelltext
1: 2: 3:
| var Spielfeld : array[0..100,0..100] of boolean; Figur : TPoint; Ziel : TPoint; |
Moderiert von
Christian S.: Delphi-Tags hinzugefügt.
Gausi - Sa 25.06.05 17:40
Hallo und :welcome:
Eine Möglichkeit, einen Weg durch dieses 0-1-Array zu finden ist folgender:
1. Starte bei A und markiere es als 'begangen'.
2. Suche von dort ein Nachbarfeld, was noch nicht 'begangen' ist, aber passierbar ist.
3. Gibt es ein solches Feld, dann gehe dorthin und markiere es ebenfalls als 'begangen'.
4. Wenn du zu einem Feld kommst, von wo aus es nur zurückgeht (= Sackgasse) dann gehe zurück, und markiere das gerade verlassene Feld als 'Sackgasse'.
5. Wiederhole ab Punkt 2, bis man am Zielfeld ist.
MariaMaria - Sa 25.06.05 19:48
Leider "rast" die Spielfigur so nur eine ewigkeit auf dem Spielfeld herum, bis sie schließlich nach langem Probieren den Weg findet.
Ich dachte eigentlich an eine Möglichkeit, den Weg bereits im Voraus zu berechnen, und zwar einen möglichst kurzen Weg sofort zum Ziel!?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!