gpt4 book ai didi

java - 如何实现java tic tac toe游戏功能

转载 作者:行者123 更新时间:2023-12-02 08:40:49 27 4
gpt4 key购买 nike

我在完成这项学校作业时遇到了问题。我想实现一种方法,其中代码显示 //call method to check for Winner,在每轮后检查获胜者。
我不确定该怎么做。我尝试过各种不同的方法。然后我希望获胜者的名字“X 获胜”或“O 获胜”显示在井字游戏板上。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;
import javafx.scene.layout.GridPane;
import javafx.geometry.*;

public class Main extends Application {
public static int turn = 1;
public static void main(String[] args) {
launch(args);
} //end main

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Play Tic Tac Toe!");

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));

Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);

for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
grid.add(createButton(), i, j);
}
}
primaryStage.show();
}

private static Button createButton() {
//instantiates button objects with the same properties
Button b = new Button(" ");
b.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//implemennt Tic Tac Toe logic
if(turn % 2 != 0) {
b.setText("X");
}
else {
b.setText("O");
}

int row = GridPane.getRowIndex(b);
int col = GridPane.getColumnIndex(b);
//outputs to the terminal
System.out.println("Turn = " + turn + " Row = " + row + " Col = " + col);
b.setDisable(true); //after button is clicked, disable it
// call method to check for winner
turn++;
}
});
return b;
}

最佳答案

有几种方法可以做到这一点。为了将其保留为您自己的工作,我不会为您发布代码,而只会引用您可以使用的潜在解决方案和算法。

您需要做的第一件事是创建一种方法来存储 state董事会的。由于板子很小(3x3) ,我只会使用一个简单的 integer array 。有三种可能states ,我想说空是 0 ,X是1 ,O 是 2 。我会分配 0-2成为顶尖3 , 3-5成为中间,并且 6-8底端。为了让事情更简单,我可能会写 getset功能array这样我就可以,

例如,写 set(X,Y,State)将该方 block 设置为该状态或获取该状态。一旦我建立了这个系统,我就需要为自己设计一种方法来查明某人是否拥有该系统。为此,我会编写一个循环来检查每个方 block 。如果方 block 是空的,则不执行任何操作,但如果它有 xo ,将坐标存储为 x1,y1然后检查所有相邻的方 block 。如果任何相邻的方 block 具有相同的状态,则将坐标存储为 x2,y2否则就移动到下一个方 block 。

最后,检查板上是否存在以下任一坐标对:(2*x2-x1,2*y2-y1)(2*x1-x2,2*y1-y2) 。如果是,则检查该方 block 的状态是否与前两个方 block 相同。如果是,那么无论该方 block 的状态是什么,都对应于获胜的玩家。

关于java - 如何实现java tic tac toe游戏功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61400565/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com