JavaFX按钮单击并下一步移动
我会用JavaFX做一个游戏:tic-tac-toe。 我创建了带有按钮的board 3x3 第一个玩家单击其中一个按钮,所选按钮文本更改为O或X 我会做一个循环,像这样:JavaFX按钮单击并下一步移动,java,javafx,Java,Javafx,我会用JavaFX做一个游戏:tic-tac-toe。 我创建了带有按钮的board 3x3 第一个玩家单击其中一个按钮,所选按钮文本更改为O或X 我会做一个循环,像这样: while(true){ player1.move("x"); player2.move("O"); } 移动中: public void move(String a){ board[0][0].setOnAction(new EventHandler<ActionEvent>() {
while(true){
player1.move("x");
player2.move("O");
}
移动中:
public void move(String a){
board[0][0].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
board[0][0].setText(a);
board[0][0].setDisable(true);
}
});
board[0][1].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
board[0][1].setText(a);
board[0][1].setDisable(true);
}
});
[...]
}
但是应用程序由于循环而无法工作
我不知道怎么做,第一个玩家有一个移动,当他选择并点击按钮,玩家2有一个下一个移动
我不知道怎么做,第一个玩家有一个移动,当他选择并点击按钮,玩家2有一个下一个移动
您必须添加一个控制游戏的游戏管理器。你必须管理游戏的回合数,并检查每一回合是否有一名玩家获胜。当然,还有其他事情,比如移动 您不需要任何主游戏循环,以下是您需要的逻辑:
int player = 0;
String [] symbol = {"X", "O"};
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
board[i][j].setOnAction(action -> {
plansza[i][j].setText(symbol[player]);
checkIfPlayerWon();
player = (player + 1) % 2;
});
}
}
根据需要调整它事件处理程序几乎不应该处于循环中。在这种情况下,每次移动时都要创建一个事件处理程序。您只需创建一次事件处理程序。board节点是按钮,因此如果您使用fxml,您只需要一个方法来处理按钮。如果您没有使用fxml,请在游戏开始前设置按钮上的处理程序。意思是不在while循环中。应该有初始化、播放和结束三个阶段。在初始化阶段,您将执行按钮处理程序。播放是循环的开始。显示更多代码,您可以获得更好的帮助。我如何做到这一点?它看起来怎么样?你可以用谷歌搜索它或者在stackoverflow上搜索,你可以从这里开始。我们无法为您编写代码,如果您提出更具体的问题,我们可能会更有帮助。链接: