Guten Abend!
Ich habe eine Karte gebaut, bei welcher erst einmal immer 10 Sektoren untereinander angeordnet sind. Jeder Sektor hat hat 15 * 15 Felder. Ich möchte nun die Anzahl der Kästchen berechnen von Koordinate 1 zu Koordinate 2.
Meine Koordinaten setzten sich folgendemaßen zusammen: Sektor:X:Y
Ein Bild zur Veranschaulichung ist als Anhang beigefügt!
Folgenden Code habe ich bereits zusammengeschustert, allerdings kann gibt es Probleme bei verschiedenen Sektoren, denn er durchläuft die Sektoren nur aufsteigend oder absteigend. Z.B. von Sektor 10 zu Sektor 20 errechnet er 10 Differenz, obwohl diese aber übereinander liegen und nur 1 herauskommen müsste...
Ich habe eine Karte gebaut, bei welcher erst einmal immer 10 Sektoren untereinander angeordnet sind. Jeder Sektor hat hat 15 * 15 Felder. Ich möchte nun die Anzahl der Kästchen berechnen von Koordinate 1 zu Koordinate 2.
Meine Koordinaten setzten sich folgendemaßen zusammen: Sektor:X:Y
Ein Bild zur Veranschaulichung ist als Anhang beigefügt!
Folgenden Code habe ich bereits zusammengeschustert, allerdings kann gibt es Probleme bei verschiedenen Sektoren, denn er durchläuft die Sektoren nur aufsteigend oder absteigend. Z.B. von Sektor 10 zu Sektor 20 errechnet er 10 Differenz, obwohl diese aber übereinander liegen und nur 1 herauskommen müsste...
PHP:
function distance($detail, $city) {
$from = explode ( ":", $city );
$to = explode ( ":", $detail );
if ($from [0] == $to [0]) {
if ($from [1] < $to [1]) {
$fields = $fields + ($to [1] - $from [1]);
} elseif ($from [1] > $to [1]) {
$fields = $fields + ($from [1] - $to [1]);
}
if ($from [2] < $to [2]) {
$fields = $fields + ($to [2] - $from [2]);
} elseif ($from [2] > $to [2]) {
$fields = $fields + ($from [2] - $to [2]);
}
} elseif ($from [0] > $to [0]) {
if ($from [1] < $to [1]) {
$fields = $fields + ($to [1] - $from [1]);
} elseif ($from [1] > $to [1]) {
$fields = $fields + ($from [1] - $to [1]);
}
$fields = $fields + (15 - $to [2]) + $from [2] + ((($from [0] - $to [0]) - 1) * 15);
} elseif ($from [0] < $to [0]) {
if ($from [1] < $to [1]) {
$fields = $fields + ($to [1] - $from [1]);
} elseif ($from [1] > $to [1]) {
$fields = $fields + ($from [1] - $to [1]);
}
$fields = $fields + (15 - $from [2]) + $to [2] + ((($to [0] - $from [0]) - 1) * 15);
}
return show ( fieldduration ) * $fields;
}