本筋とは関係ない話ですが、ビット演算を使って普通に判定をすると4方向ではなく8方向移動になってしまいます。