【发布时间】:2016-05-04 16:00:17
【问题描述】:
我是新来的,就像一周前一样,我开始学习编程,并且正在开发我的基于文本的战略游戏,我想让资源每隔 x 秒被动地收集一次。
我的游戏基本上是基于 while (true) 循环,其中是 switch case,游戏一直等待按键来收集资源。
我希望游戏每 x 秒被动收集一次资源。
示例:每 10 秒您将获得 +1 木材。
我会欢迎你的帮助 :) 使用 NetBeansIDE 在 java 中进行 Iam 编程
【问题讨论】:
我是新来的,就像一周前一样,我开始学习编程,并且正在开发我的基于文本的战略游戏,我想让资源每隔 x 秒被动地收集一次。
我的游戏基本上是基于 while (true) 循环,其中是 switch case,游戏一直等待按键来收集资源。
我希望游戏每 x 秒被动收集一次资源。
示例:每 10 秒您将获得 +1 木材。
我会欢迎你的帮助 :) 使用 NetBeansIDE 在 java 中进行 Iam 编程
【问题讨论】:
使用this 获取每个循环运行的当前时间 并检查自上次你给 +1 木材以来是否经过了 10 秒。 注意时间单位。
【讨论】:
我不确定你是如何存储收集到的资源的,但是你是否可以调用一个方法来根据游戏开始的时间来查找它。您可以将以下变量存储为游戏类的一部分:
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 变量,而不是打印。
【讨论】:
如果对可以使用的类没有限制,请尝试作为 Java Swing 一部分提供的 Timer 类。您还可以查看 java.util.Timer 课程以安排您的更新。
【讨论】: