如何实现java tic-tac-toe游戏功能
我在学校的作业上遇到了麻烦。我想实现一个方法,其中代码显示如何实现java tic-tac-toe游戏功能,java,javafx,Java,Javafx,我在学校的作业上遇到了麻烦。我想实现一个方法,其中代码显示//调用方法检查获胜者,在每个回合后检查获胜者 我不知道怎么做。我试过各种不同的方法。然后我想把获胜者的名字“X赢”或“O赢”显示在tic tac趾板上 import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import java
//调用方法检查获胜者
,在每个回合后检查获胜者我不知道怎么做。我试过各种不同的方法。然后我想把获胜者的名字“X赢”或“O赢”显示在tic tac趾板上
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;
}
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.stage.stage;
导入javafx.scene.layout.GridPane;
导入javafx.geometry.*;
公共类主扩展应用程序{
公共静态整数匝数=1;
公共静态void main(字符串[]args){
发射(args);
}//末端总管
@凌驾
公共无效开始(阶段primaryStage){
初级阶段。设置标题(“玩井字游戏!”);
GridPane grid=新建GridPane();
网格设置对齐(位置中心);
网格。setHgap(10);
网格设置间隙(10);
网格设置填充(新插图(25,25,25,25));
场景=新场景(网格,300275);
初级阶段。场景(场景);
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
add(createButton(),i,j);
}
}
primaryStage.show();
}
私有静态按钮createButton(){
//实例化具有相同属性的按钮对象
按钮b=新按钮(“”);
b、 setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
//实现Tic-Tac-Toe逻辑
如果(转动%2!=0){
b、 setText(“X”);
}
否则{
b、 setText(“O”);
}
int row=GridPane.getRowIndex(b);
int col=GridPane.getColumnIndex(b);
//输出到终端
系统输出打印项次(“Turn=“+Turn+”行=“+Row+”列=“+Col”);
b、 setDisable(true);//单击按钮后,将其禁用
//调用方法来检查赢家
turn++;
}
});
返回b;
}
有几种方法可以做到这一点。为了让这成为您自己的工作,我将不为您发布代码,只参考您可以使用的潜在解决方案和算法
您需要做的第一件事是创建一种方法来存储电路板的状态
,我只会使用一个简单的整数数组
。有三种可能的状态
,我会说空是0
,X是1
,O是2
。我会指定0-2
为顶部3
,3-5
为中间,而6-8
为底部。为了让事情更简单一些我可以为这个数组
编写get
和set
函数,以便
例如,写入set(X,Y,State)
将该方格设置为该状态或检索该状态。一旦设置了该系统,我需要为自己设计一种方法,以确定是否有人有一个方格。为此,我将编写一个循环来检查每个方格。如果方格为空,则不执行任何操作,但如果它有一个x
或o
,则存储坐标按x1,y1
进行Nate,然后检查所有相邻的方块。如果任何相邻方块具有相同的状态,则将坐标存储为x2,y2
,否则只需移动到下一个方块
最后,检查电路板上是否存在以下坐标对:(2*x2-x1,2*y2-y1)
和(2*x1-x2,2*y1-y2)
。如果是,则检查该方块的状态是否与前两个相同。如果是,则无论该方块的状态如何,都对应于获胜的玩家。网页上的一句话,询问堆栈溢出问题应该是找到答案的过程中的最后一步。您没有尝试搜索Interne吗t表示javafx tic tac toe术语?