使用JavaFX图形API,编写游戏——TICTACTOE三子棋。
时间: 2023-10-10 09:06:33 浏览: 54
好的,我可以帮您回答这个问题。
首先,TICTACTOE三子棋是一个非常简单的游戏,但是它可以帮助您了解JavaFX图形API的使用。在这个游戏中,两个玩家轮流放置X和O,直到有一个玩家在水平、垂直或对角线上放置了三个X或O为止。
以下是一个使用JavaFX图形API编写的基本TICTACTOE游戏的示例代码:
```
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
public class TICTACTOE extends Application {
private Button[][] board = new Button[3][3];
private boolean xTurn = true; // X goes first
@Override
public void start(Stage primaryStage) throws Exception {
// Create the game board
GridPane gridPane = new GridPane();
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
Button button = new Button();
button.setPrefSize(100, 100);
button.setOnAction(event -> {
if (button.getText().isEmpty()) {
if (xTurn) {
button.setText("X");
} else {
button.setText("O");
}
xTurn = !xTurn;
checkForWin();
}
});
board[i][j] = button;
gridPane.add(button, i, j);
}
}
// Create the scene and show the stage
Scene scene = new Scene(gridPane, 300, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
private void checkForWin() {
// Check rows
for (int i = 0; i < 3; i++) {
if (!board[i][0].getText().isEmpty() && board[i][0].getText().equals(board[i][1].getText())
&& board[i][1].getText().equals(board[i][2].getText())) {
System.out.println(board[i][0].getText() + " wins!");
System.exit(0);
}
}
// Check columns
for (int j = 0; j < 3; j++) {
if (!board[0][j].getText().isEmpty() && board[0][j].getText().equals(board[1][j].getText())
&& board[1][j].getText().equals(board[2][j].getText())) {
System.out.println(board[0][j].getText() + " wins!");
System.exit(0);
}
}
// Check diagonals
if (!board[0][0].getText().isEmpty() && board[0][0].getText().equals(board[1][1].getText())
&& board[1][1].getText().equals(board[2][2].getText())) {
System.out.println(board[0][0].getText() + " wins!");
System.exit(0);
}
if (!board[0][2].getText().isEmpty() && board[0][2].getText().equals(board[1][1].getText())
&& board[1][1].getText().equals(board[2][0].getText())) {
System.out.println(board[0][2].getText() + " wins!");
System.exit(0);
}
// Check for tie
boolean tie = true;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j].getText().isEmpty()) {
tie = false;
break;
}
}
}
if (tie) {
System.out.println("Tie game!");
System.exit(0);
}
}
public static void main(String[] args) {
launch(args);
}
}
```
在这个示例代码中,我们创建了一个3x3的网格,并在每个单元格中放置了一个按钮。当玩家点击一个按钮时,如果该按钮还没有被填充,就将其填充为“X”或“O”,取决于当前轮到哪个玩家。我们还实现了一个名为checkForWin()的方法,该方法在每个玩家放置一个新的符号时检查游戏是否已经结束,如果有一个玩家在水平、垂直或对角线上放置了三个符号,则该玩家获胜。如果没有玩家获胜并且所有单元格都被填满,则游戏以平局结束。
希望这个示例代码可以帮助您开始使用JavaFX图形API编写TICTACTOE游戏。