最初に投稿された math.stackexchange.com
動きが 1 次元で計算されるチェスの駒の移動が有効かどうかを検証しようとしています。
チェス盤のマスを{A1, B1, C1, ...}と識別する代わりに、それぞれ{1, 2, 3, ...}と識別します。
有効な動きの計算は加算/減算によって行われますが、非常に誤った動きを示唆する可能性があるため、信頼性は高くありません。
最初に、ポーンの動作を確認しました。
- 一度に 1 マス (開始位置にある場合は 2 マス) 前方に移動します。
- 斜めに、1マス当たります。
したがって、ポーンの移動可能性は単純に現在の位置に 8 (または 16) を加えたものです。つまり、次のようになります。
C2 = 11、
11 + 8 = 19 = C3
これで、打撃も同様に簡単になるはずです。7または9を足したり引いたりするだけですが、これは完全に正しいわけではありません...
ポーンが 16 として識別される H2 にある場合、以下を攻撃します。
16 + 9 = 35 = A4、
明らかに無効な動きです。
これを回避するために、(白いポーンの場合) Pで示されるポーンの現在の位置が次のとおりであるかどうかを確認しました。
((P + 7) % 8 != 0) && (P % 8 != 0)
今、私は残りの駒の動きを一般的に確認する方法を理解するのに本当に大きな問題を抱えています...
残りの駒の動きを検証する効果的な方法はありますか?