gpt4 book ai didi

Java 井字棋网络

转载 作者:行者123 更新时间:2023-12-01 09:18:38 26 4
gpt4 key购买 nike

好吧,我正在尝试制作一个具有网络选项的井字游戏。我已经编写了这段代码,但遇到了一些问题。

public void actionPerformed(ActionEvent e)
{
JButton temp=(JButton)e.getSource();
//temp.setText("X");
if(turn%2==0)
{
temp.setText("X");
temp.setIcon(gui.imgX);
temp.setDisabledIcon(gui.imgX);
gui.repaint();
gui.revalidate();
turn++;
try {
for(int i=0;i<gui.buttons.length;i++)
if(temp==gui.buttons[i])
out.write(i);
} catch (IOException e1) {
e1.printStackTrace();
}
}
if(turn%2==1)
{
try {
System.out.println(turn);
gui.buttons[in.read()].setText("O");
gui.revalidate();
System.out.println(turn);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
turn++;
}
}

好吧,每当我单击按钮时,它都会在下一个 if 条件(turn%2==0)内运行,但不会设置按钮图标或文本。然而,它实际上以某种方式在后台设置它,所以只有当它完成整个 actionPerformed 并从另一台电脑读取 int 时,我的图标和文本才可见。所以基本上,它在完成整个 actionPerformed 方法后一起显示“X”和“O”。我该如何解决这个问题,以便在按下按钮时显示“X”,而无需等待从另一台电脑读取数据。请注意,它成功地将 int 写入另一台电脑,并且按钮文本/图标在那里发生更改,而无需等待其他 if 条件。

最佳答案

目前您正在将 UI 内容与逻辑/ Controller 混合在一起。我认为如果你把它分开的话会有帮助。 IE。在处理 ActionEvent 时,您正在等待“远程玩家”的响应,从而阻塞所有其他 UI 事物。

我会尝试将控件(轮到谁并从远程站读取)移动到后台线程,然后仅在轮到我执行或收到来自远程玩家的信息时更新 UI。

关于Java 井字棋网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40329389/

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