我使用javafx制作了tic-tac-toe游戏。我是java的新手,我试图在获胜或抽奖后让位于结束游戏。没有必要检查是输赢还是其他任何东西。当你无法继续玩时,我想把这个文字结束。我尝试使用数组,但我不知道该怎么做。
这是我的代码:
import java.util.ArrayList;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
public class ticTacToe extends Application {
private boolean turn;
private int[][] locations;
public RistinollaSovellus() {
turn = true;
locations = new int[3][3];
}
public static void main(String[] args) {
launch(ticTacToe.class);
}
@Override
public void start(Stage window) throws Exception {
boolean endGame = false;
BorderPane layout = new BorderPane();
Label text = new Label("Turn: X");
text.setFont(Font.font("Monospaced", 40));
layout.setTop(text);
GridPane array = new GridPane();
if (!endGame) {
for (int x = 1; x <= 3; x++) {
for (int y = 1; y <= 3; y++) {
Button btn = new Button(" ");
btn.setFont(Font.font("Monospaced", 40));
array.add(nappi, x, y);
locations[x][y] = 0;
btn.setOnAction((event) -> {
if (btn.getText().equals(" ")) {
if (turn) {
btn.setText("X");
text.setText("Turn: O");
turn = false;
} else if (!turn) {
btn.setText("O");
text.setText("Turn: X");
turn = true;
}
}
});
}
}
}
layout.setCenter(array);
Scene showing = new Scene(layout);
window.setScene(showing);
window.show();
}
}
答案 0 :(得分:0)
传递给btn.setOnAction()
的参数是一个事件监听器,每次用户单击按钮时都会执行其逻辑。
在按钮上单击,您要检查网格是否包含有效的井字游戏配置。为此,您需要展开侦听器并使用location
数组来检查网格上所有按钮的当前状态。
找到有效的单元格组合后,您可以调用Platform.exit()
来停止该应用程序。
编辑: x
和y
循环变量应从0开始并最多为2,否则抛出ArrayIndexOutOfBoundsException。数组的第一个索引是0,而不是1。
答案 1 :(得分:-1)
我不确定你的意思,但我认为如果你实现了这个游戏,就好像它的工作应该那样,那么你很容易想出如何结束它。
如果有任何玩家获胜,你可以在这里做很多事情你可以只显示玩家x赢得的警告,并提供退出或重新启动应用程序的选项,如果出现平局,你也可以这样做。 / p>
从技术上讲,调用stop()
方法停止所有进程并结束游戏