写真がないとわかりにくいかもしれませんが、王様がチェックされているか確認中です。そうするために、私は王の位置から始めて、上、左、下、右、そしてすべての斜めのパターンに行きます.
コードを簡素化するために、開始場所と終了場所を受け取り、そのパスに王に対する脅威がある場合に true を返すパス チェッカー メソッドがあります。したがって、このメソッドを次のように呼び出しています。
board.incheckPath(kingLocation, new Location(8, kingY))
これは、キングから一番上の行、同じ列までチェックします。左、下、右についても同様のステートメントがあります。
問題は、対角線パターンに同じ方法を使用しようとしていて、最後の場所がどこにあるかを把握するための単純なアルゴリズムを理解できないことです。あなたが右にいるよりも高い場合は、右斜め上に行くと、一番右の列に当たる前に一番上の行に当たります. その場所のアルゴリズムは次のとおりです。
if x > y {
row = 8; column = 8-(x-y)
} else {
row = 8-(x-y); column = 8;
}
着陸する場所は、一番上の行または右の列から離れた x と y の差になるからです。しかし、上下左右、上下左右の結果がどうなるかわかりません。