Dies ist eine Technik, um alle Richtungen als Arrays zu codieren - jedes Paar di[i],dj[i]
ist eine andere Richtung.
Wenn wir uns vorstellen, dass wir ein Stück an einem Ort x, y haben und wir es zu seinem x- und y-Wert addieren möchten, um es an einen nahe gelegenen Ort zu verschieben, ist 1,0 Ost, -1,0 West, 0,1 ist südlich, 0, -1 ist nördlich und so weiter.
(Hier habe ich gesagt, dass oben links 0,0 und unten rechts 4,4 ist und gezeigt, welche Bewegung jeder Index der Arrays vom Mittelpunkt X bei 2,2 macht.)
.....
.536.
.1X0.
.724.
.....
So wie es eingerichtet ist, erhalten Sie ^1
( wenn Sie ^
bitweise XOR sind) auf dem Index die entgegengesetzte Richtung - 0 und 1 sind Gegensätze, 2 und 3 sind Gegensätze und so weiter. (Eine andere Möglichkeit, es einzurichten, besteht darin, von Norden aus im Uhrzeigersinn zu fahren und dann in ^4
die entgegengesetzte Richtung zu gelangen.)
Jetzt können Sie alle Richtungen von einem bestimmten Punkt aus testen, indem Sie Ihre di
und dj
Arrays durchlaufen , anstatt jede Richtung in einer eigenen Zeile aufschreiben zu müssen (insgesamt acht!) (Vergessen Sie nur nicht, die Grenzwerte zu überprüfen :))
diK
und djK
bilden alle Ritter Richtungen anstelle aller benachbarten Richtungen. Hier ^1
wird entlang einer Achse gedreht, ^4
wird der entgegengesetzte Rittersprung geben.
.7.6.
0...5
..K..
1...4
.2.3.
d={0,1,0,-1,0}
dafür: Gegenstandspaare,d[i], d[i+1]
um mir vier Himmelsrichtungen zu geben.