我正在制作一个cookie点击器类型的游戏,我想要一个每秒钟一定数量的东西,比如说5被添加到另一个号码。所以整数变量每秒都会增加5.如何创建一种时间测量方法来测量时间,以便我可以将数字添加到另一个数字。
public class timeTesting {
// I've put this method here for someone to create
// a timer thing
void timer()
{
}
public static void main(String[] args) {
// Original number
int number = 1;
// Number I want added on to the original number every 5 seconds
int addedNumber = 5;
}
}
答案 0 :(得分:1)
如果您定位到Android平台,则可以使用CountDownTimer,它允许您在特定时间内每隔一定时间执行一些代码。但请注意,android并不像J2SE那样使用主要方法。
无论如何,如果您正在寻找编程Android游戏,我强烈建议您从这里开始:Android Development
答案 1 :(得分:1)
您可以使用Timer来安排在run()方法中拥有所需代码的TimerTask。检查下面的代码(运行()将在5000毫秒后调用一次):
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
number += addedNumber;
}
}, 5000);
此外,您可以使用scheduleAtFixedRate(TimerTask任务,长延迟,长时间段)进行重复性任务(此处运行将立即调用,每5000毫秒):
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
number += addedNumber;
}
}, 0, 5000);
答案 2 :(得分:0)
您应该考虑使用Timer
,它会在某个时间间隔过后触发事件。它也可以经常重复这个事件。
答案 3 :(得分:0)
我想建议开始学习RxJava
。反应式编程对游戏开发非常有用:https://www.youtube.com/watch?v=WKore-AkisY
使用RxJava,可以使用 Observable interval()方法解决您的问题:
https://github.com/Netflix/RxJava/wiki/Creating-Observables#interval
伊万
答案 4 :(得分:0)
不是很优雅,但工作代码:
public class MyTimer {
private volatile int number; //must be volatile as we're working on multiple threads.
private final int numberToAdd;
private final long timerTimeInMillis;
public MyTimer() {
number = 1;
numberToAdd = 5;
timerTimeInMillis = 5000;
}
public void runTimer() {
new Thread() { //declaring a new anonymous Thread class
public void run() { //that has to override run method.
while (true) //run the program in an infinite loop
{
number += numberToAdd; //add a number
System.out.println("Added number. Now the number is: " + number);
try {
Thread.sleep(timerTimeInMillis); //and then sleep for a given time.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start(); //and here we're starting this declared thread
}
public static void main(String[] args)
{
new MyTimer().runTimer();
try {
Thread.sleep(100000); //this application will work for 100sec.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
使用java.util.Timer会更优雅,但在这里你可能会得到匿名课程。