gpt4 book ai didi

java - 如何为我的国际象棋游戏添加倒计时?

转载 作者:行者123 更新时间:2023-12-01 16:22:42 24 4
gpt4 key购买 nike

我一直在JavaFX中开发一款国际象棋游戏,我认为它效果很好,但现在我正在尝试为两个玩家添加倒计时。我尝试阅读文档/观看 youtube 视频/在 StackOverflow 上搜索,我终于成功了,我可以每秒在控制台上打印计时器。问题是我有另一个类中的代码,我希望不要在控制台上打印,而是显示在我的 GUI 应用程序 上(使用 Text 变量),所以我不知道如何才能将倒计时发送到我的主类(我使用了 run() 方法,所以我认为这是不可能的),然后将其添加到我的 Pane 、场景等中。或者也许有一种方法可以将其直接添加到场景或 Pane 中, 我不知道。这是我的倒计时代码:

package com.mycompany.chess;

import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.scene.text.Text;
import org.w3c.dom.css.Counter;


public class MyThread extends Thread {
static int min = 10;
static int sec = 0;
Text counter = new Text();


public void run(){
while(min>-1){
if(sec == 0){
min--;
sec = 59;
}
if(sec<10){
String seconds = String.valueOf(sec);
String minutes = String.valueOf(min);
counter.setText(minutes + ":0" + seconds);
System.out.println(minutes + ":0" + seconds);
try {
Thread.sleep(1000L);
} catch (InterruptedException ex) {
Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
}
sec--;
}else{
String seconds = String.valueOf(sec);
String minutes = String.valueOf(min);
counter.setText(minutes + ":" + seconds);
System.out.println(minutes + ":" + seconds);

try {
Thread.sleep(1000L);
} catch (InterruptedException ex) {
Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
}
sec--;
}
}
}

}

如果代码很困惑或类似的东西,请不要评判我,我是一个十足的初学者。

谢谢大家

最佳答案

来自Concurrency in JavaFX Oracle 教程:

The JavaFX scene graph, which represents the graphical user interface of a JavaFX application is not thread-safe and can only be accessed and modified from the UI thread also known as the JavaFX Application thread.

根据它,您不应从 JavaFX 应用程序线程以外的线程修改 JavaFX 组件。相反,请使用 JavaFX 工具,如链接教程中所述,并在许多易于查找的示例中进行演示,例如 this one .

关于java - 如何为我的国际象棋游戏添加倒计时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62229377/

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