【发布时间】:2019-12-22 05:30:37
【问题描述】:
我正在制作一个带有按钮的跳棋游戏。要杀死另一块,你必须将你的块沿对角线移动到另一块之上,但我不确定如何确保你的块移动到另一块之上。
我解决这个问题的想法是获取第二个按钮的行和列,这是您的作品移动到的按钮,然后从每个行和列中减去 1,然后从该按钮获取文本进行测试如果是“黑色”或“红色”。
第一个和第二个 = 按钮
System.out.println((GridPane.getColumnIndex(second) + " vs " + (GridPane.getColumnIndex(second) - 1)));
if (GridPane.getColumnIndex(second) > 0) {
System.out.println("checking if a button has been jumped");
GridPane.setRowIndex(second, (GridPane.getRowIndex(second) - 1));
GridPane.setColumnIndex(second, (GridPane.getColumnIndex(second) - 1));
System.out.println("this is a printing of the second button name for location " + (GridPane.getColumnIndex(second)) + " " + (GridPane.getRowIndex(second)) + " " + second.getText());
if (second.getText().contains("black")) {
System.out.println("it's a kill");
}
else {
System.out.println("no kill");
GridPane.setRowIndex(second, (GridPane.getRowIndex(second) + 1));
GridPane.setColumnIndex(second, (GridPane.getColumnIndex(second) + 1));
}
}
我可以将行和列更改为与另一部分的位置匹配的内容,但是当我从该按钮(第二个)获取文本时,它不会以名称“黑色”或“红色”,而只是空白按钮的名称。
我的猜测是 GridPane 可能不会像这样工作,我只需要想出另一个解决方案,希望我不必将整个代码重做为二维数组或其他东西。
【问题讨论】:
-
在 java 中没有像 C++ 引用一样的东西。
setColumn/RowIndex不会更改作为第一个参数传递给另一个节点的值... -
真的,唯一的另一种方法是使用二维按钮数组来访问特定节点?
-
您可以在子列表中找到合适的子,但这更复杂:stackoverflow.com/questions/20825935/… 如果您担心每次移动子时都必须更新
GridPane和数组,只需创建一个负责更新布局参数和数组的方法。 -
其实我才知道怎么做的,我就贴在下面了。哦,这与我发现的代码相似。感谢您的帮助!
标签: java button javafx gridpane