2D 配列があり、1 つのスロットが隣接しており、別のスロットと接触しているかどうかを確認したいとします。
座標が 4 バイト変数であるとします: OneX
、OneY
、TwoX
、TwoY
。
私がしばらくの間持っていた解決策は、違いがOneX - OneY
ありTwoX - TwoY
、それらを追加した場合、結果が または のいずれ1
か-1
である場合、はい、スロットは隣接しており、接触しているということでした。
mov EBX,[oneX]
sub EBX,[oneY]
mov ECX,[twoX]
sub ECX,[twoY]
add EBX,ECX
; Compare EBX with 1 or -1.......
これはほとんど機能します。しかし、いいえ - 形式 (x,y) が与えられた場合、(3,3) と (0,1) を取ります。それらは明らかに隣接しておらず、接触していませんが、関数はそれらが隣接していると言います。
2 次元配列で隣接する要素を取得するでの質問は? やや便利ですが、隣接するすべての一致を見つけることに焦点を当てていますが、代わりに2つの特定のスロットをチェックしたい.
私の配列の構造は次のようになります。
map: dd 'a','b','c','d' ; Double words just to make my life easier
次のように解釈されます
a b
c d
正方形の地図です。