Hallo Leute,
ich bastel grad an einer Pathfinding lightversion.
Mir geht es darum, herauszufinden welche Koordinaten zwischen dem Startpunkt und Zielpunkt liegen,
damit ich die Datenbank abfragen kann, ob das Gebiet für diese Aktion geeignet ist.
d.h. mit Gebiet meine ich Wasser, Land usw. und Aktion Spieler verlegt sein Schiff von a nach b und
dabei sollte das Schiff natürlich nicht über Land fahren.
Horizontal und vertikal ist kein Problem nur wenn die Zellen diagonal auseinanderliegen gibt es Probleme.
Hier mal ein kleines Beispiel meines Problems:
s = Startpunkt
z = Zielpunkt
# = angezeigte Koordinaten
start-y = 1
start-x = 1
ziel-y = 5
ziel-x = 2
1 2 3 4 5 X
01|s|_|_|_|_|
02|#|_|_|_|_|
03|#|_|_|_|_|
04|#|_|_|_|_|
05|_|z|_|_|_|
Y
start-y = 1
start-x = 1
ziel-y = 5
ziel_x = 3
1 2 3 4 5 X
01|s|_|_|_|_|
02|_|#|_|_|_|
03|_|#|_|_|_|
04|_|#|_|_|_|
05|_|_|z|_|_|
Y
^^Bis hierhin läuft alles wunderbar.
start-y = 1
start-x = 1
ziel-y = 5
ziel_x = 4
1 2 3 4 5 X
01|s|_|_|_|_|
02|_|#|#|_|_|
03|_|#|#|_|_|
04|_|#|#|_|_|
05|_|_|z|_|_|
Y
^^Hier werden mir "2" Wege angezeigt![Frown](https://www.php-resource.de/forum/core/images/smilies/frown.gif)
Der Code dazu
Kann mir jemand helfen oder einen Tip geben?
ich bastel grad an einer Pathfinding lightversion.
Mir geht es darum, herauszufinden welche Koordinaten zwischen dem Startpunkt und Zielpunkt liegen,
damit ich die Datenbank abfragen kann, ob das Gebiet für diese Aktion geeignet ist.
d.h. mit Gebiet meine ich Wasser, Land usw. und Aktion Spieler verlegt sein Schiff von a nach b und
dabei sollte das Schiff natürlich nicht über Land fahren.
Horizontal und vertikal ist kein Problem nur wenn die Zellen diagonal auseinanderliegen gibt es Probleme.
Hier mal ein kleines Beispiel meines Problems:
s = Startpunkt
z = Zielpunkt
# = angezeigte Koordinaten
start-y = 1
start-x = 1
ziel-y = 5
ziel-x = 2
1 2 3 4 5 X
01|s|_|_|_|_|
02|#|_|_|_|_|
03|#|_|_|_|_|
04|#|_|_|_|_|
05|_|z|_|_|_|
Y
start-y = 1
start-x = 1
ziel-y = 5
ziel_x = 3
1 2 3 4 5 X
01|s|_|_|_|_|
02|_|#|_|_|_|
03|_|#|_|_|_|
04|_|#|_|_|_|
05|_|_|z|_|_|
Y
^^Bis hierhin läuft alles wunderbar.
start-y = 1
start-x = 1
ziel-y = 5
ziel_x = 4
1 2 3 4 5 X
01|s|_|_|_|_|
02|_|#|#|_|_|
03|_|#|#|_|_|
04|_|#|#|_|_|
05|_|_|z|_|_|
Y
^^Hier werden mir "2" Wege angezeigt
![Frown](https://www.php-resource.de/forum/core/images/smilies/frown.gif)
Der Code dazu
PHP-Code:
//diagonal unten rechts
IF($start_y < $ziel_y AND $start_x < $ziel_x) {
$weg_x = $start_x +1;
$weg_y = $start_y +1;
if($weg_y == $ziel_y) { $weg_y = $start_y; }
if($weg_x == $ziel_x AND $weg_y != $start_y) { $weg_x = $start_x; }
for($a = $weg_y; $a < $ziel_y; $a++) {
for($b = $weg_x; $b < $ziel_x; $b++) {
echo "Koords: Y-".$a." X-".$b;
}
}
}
Kommentar