gpt4 book ai didi

java - 如何通过避免重复来缩短 Tic Tac Toe 代码

转载 作者:行者123 更新时间:2023-12-02 01:27:23 25 4
gpt4 key购买 nike

这是我的第一个 JavaFX 项目。

我使用 JavaFx 创建了一个 Tic Tac Toe 游戏。该游戏适用于玩家对玩家模式,非常完美,但我使用的代码太长。

以下是一些明显重复的内容,但它们完全不同:

Tic-tac-toe code help improve

Code Golf: Tic Tac Toe

这是我的按钮一的代码,我必须为另外八个按钮重复该代码:

one.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
System.out.println(1);
System.out.println("my state is " + state[0]);
if (state[0] == 0){
state[0] = 1 ;
for (int a: state ) {
System.out.print(a);}
if(i%2==0){
one.setText("X"); i+= 1;
System.out.println(i+"recorded");
turn.setText("O turn");
result[0] = 'x';
win() ;
}
else{
one.setText("O"); i+= 1 ;
System.out.println(i+"recorded");
turn.setText("X turn");
result[0] = 'o';
win() ;
}
}
}
});

屏幕截图:

enter image description here

是否可以选择避免为另外 8 个按钮重复代码?

您可以在屏幕截图中看到也有重复的 for 循环。

这是我的第一个 GUI 项目,但我不打算继续当初学者。

编辑

After I don't see any for-loop in the code. Perhaps you meant if-statements? – NiVeR

是的,我的意思是 if 语句。

最佳答案

尝试这样做:

void makeMove(Button button, JLabel turn, int cell){
System.out.println(cell);
System.out.println("my state is " + state[cell-1]);
if (state[cell-1] == 0){
state[cell-1] = 1 ;
for (int a: state ) {
System.out.print(a);}
if(i%2==0){
button.setText("X"); i+= 1;
System.out.println(i+"recorded");
turn.setText("O turn");
result[cell-1] = 'x';
win() ;
}
else{
button.setText("O"); i+= 1 ;
System.out.println(i+"recorded");
turn.setText("X turn");
result[cell-1] = 'o';
win() ;
}
}
}

one.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
makeMove(one,turn,1);
}
);

并对其他按钮重复此操作,将 1 更改为 2...9

该代码实际上仍然可以改进,但是,既然您说过您正在开始,那么这是开始考虑模块化代码的好方法。

我不确定 turn 是什么,所以我在 makeMove 的定义中将其设为一个标签,将其更改为实际情况。

关于java - 如何通过避免重复来缩短 Tic Tac Toe 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698389/

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