如何在不停止Java程序的情况下每x秒更改一次变量?

时间:2016-05-04 16:00:17

标签: java console

我刚刚来到这里,就像一周前我开始学习编程,并且我正在开发基于文本的战略游戏,我希望每隔x秒被动地收集资源。

基本上我的游戏基于while(true)循环,其中有切换案例,游戏一直等待按键来收集资源。

我希望游戏每x秒被动地收集资源。

示例:每10秒钟您将收到+1木头。

我会欢迎帮助:) Iam使用NetBeansIDE在java中编程

3 个答案:

答案 0 :(得分:0)

使用this获取每次循环中的当前时间 并检查自上次给你+1木头后是否经过了10秒。 注意时间单位。

答案 1 :(得分:0)

我不确定您是如何存储收集的资源,但是如果您可以根据游戏开始时调用方法来查找它。您可以将以下变量存储为游戏类的一部分:

private long startTime = System.currentTimeMillis();

然后使用以下方法获取当前资源:

public int getWood() {
    long diffMilliseconds = System.currentTimeMillis() - startTime;
    int numSeconds = (int)diffMilliseconds / 1000;
    int amtWood = numSeconds/10;
    return amtWood + <any other wood gathering/calculating parameters>;
}

这不考虑使用您的木材。如果您希望变量每十秒更新一次,您可以使用类似解决方案的内容:Print "hello world" every X seconds。此解决方案使用TimeTask类。您可以更新amtWood变量,而不是打印。

答案 2 :(得分:0)

如果对可以使用的类没有限制,请尝试将Timer类作为Java Swing的一部分提供。您还可以查看java.util.Timer课程以安排更新。