我有一个 8 x 8 的棋盘,我正在尝试实现八皇后拼图。在我的游戏中,我创建了一个功能来检查皇后的移动,一旦在我的棋盘上按下一个按钮,特定皇后可以移动的所有行和列都会关闭,这样就不会有两个皇后互相攻击。然而,我被卡住了,试图弄清楚如何在我的代码中关闭所有对角线按钮。
private JButton[][] Squares = new JButton[8][8];
for (int i = 0; i < Squares.length; i++) {
for (int j = 0; j < Squares[i].length; j++) {
if(Squares[i][j].getModel().isPressed()){
for (int x=0; x<8; x++){
Squares[i][x].setEnabled(false); //turns off column buttons
Squares[x][j].setEnabled(false); //turns off row buttons
//Squares[i][j+1].setEnabled(false);
//Squares[i+1][j-1].setEnabled(false);
}
一旦皇后被放置在棋盘上,我需要做什么才能禁用所有对角线按钮?
编辑:我注意到如果我执行 Squares[x][x].setEnabled(false);
然后它会给我两个对角线之一,但是这只给对角线一次在点击第二个按钮后,一切都崩溃了。
最佳答案
我最近回答了一个关于 SO 的类似问题。
您可以查看我的代码以响应 the similar question here .
但基本上,如果您的女王的位置是[a][b]
。
并且您想检查另一个位置的坐标 [x][y]
是否在对角线上。
y-x == b-a
如果单元格在同一条右对角线上。x+y == a+b
如果您的单元格在同一条左对角线上。
希望这对您有所帮助。
关于java - 八皇后 - 对角线运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938198/