我试图设置一个井字游戏,我为每个按钮创建了 9 个字符串值。 按下按钮后,它会根据它是 X 还是 O 为其分配一个字符串值。 最后,我连接了所有字符串以向 consol 输出一条获胜消息,但它似乎不起作用。
按钮的代码
// Create a Button
Button TopLeft = new Button("");
root.getChildren().add(TopLeft);
// Move the Button
TopLeft.setTranslateX(-150);
TopLeft.setTranslateY(-150);
// Action for the Button
// Code from: https://docs.oracle.com/javafx/2/ui_controls/button.htm
TopLeft.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
if (playerX == true) {
TopLeft.setText("X");
tl = "X";
} else {
TopLeft.setText("O");
tl = "O";
}
playerX = !playerX;
TopLeft.setDisable(true);
}
});
获胜条件
//WIN CONDITION, r1 = row 1, c1 = column 1, d1 = diagonal 1, etc
r1 = tl + tm + tr;
r2 = l + m + r;
r3 = bl + bm + br;
c1 = tl + l + bl;
c2 = tm + m + bm;
c3 = tr + r + br;
d1 = tl + m + br;
d2 = tr + m + bl;
if((r1.equals("XXX") || r2.equals("XXX") || r3.equals("XXX") || c1.equals("XXX") || c2.equals("XXX") || c3.equals("XXX") || d1.equals("XXX") || d2.equals("XXX")) == true){
System.out.println("Player X Wins");
} else {
System.out.println("Player O Wins");
}
将这样的操作命令添加到引用的按钮中:
TopLeft.setActionCommand("ButtonX");
在您的句柄方法中
String action = e.getActionCommand();
if (action.equals("ButtonX") {
// code here
}
尝试检查玩家是否在点击按钮后立即获胜。您可能需要创建一个方法来检查玩家是否获胜,如下所示:
private boolean playerWon(){
r1 = tl + tm + tr;
r2 = l + m + r;
r3 = bl + bm + br;
c1 = tl + l + bl;
c2 = tm + m + bm;
c3 = tr + r + br;
d1 = tl + m + br;
d2 = tr + m + bl;
return ((r1.equals("XXX") || r2.equals("XXX") || r3.equals("XXX") ||
c1.equals("XXX") || c2.equals("XXX") || c3.equals("XXX") ||
d1.equals("XXX") || d2.equals("XXX") ||
r1.equals("OOO") || r2.equals("OOO") || r3.equals("OOO") ||
c1.equals("OOO") || c2.equals("OOO") || c3.equals("OOO") ||
d1.equals("OOO") || d2.equals("OOO")))
}
然后在切换转弯之前调用此方法。那是在playerX = !playerX;
之前.你可以做这样的事情
TopLeft.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
if (playerX == true) {
TopLeft.setText("X");
tl = "X";
} else {
TopLeft.setText("O");
tl = "O";
}
if(playerWon()){
if(playerX) System.out.println("Player X Wins");
else System.out.println("Player O Wins");
}
playerX = !playerX;
TopLeft.setDisable(true);
}
});