我创建了一个简单的游戏,要求你在一定的转弯量内猜出一个数字(例如10)。然而,这使得很容易被击败。我需要帮助的是如何跟踪游戏的持续时间。
这是我到目前为止所想到的(减去游戏逻辑),但它似乎没有起作用
Random ranNum = new Random();
double input; // The input
long startTime; // The time the game started
long curTime; // The time the game ended
double randNum = ranNum.nextInt(100);
while (curTime > 1000){
curTime = System.currentTimeMillis();
input = TextIO.getlnDouble();
if (input = Math.abs(randNum)){
System.out.println("You got the correct answer");
} // End if statement
else {
System.out.println("You did not have the correct answer");
System.out.println("The number was" + randNum + ".");
} // End else statement
} // End while statement
答案 0 :(得分:0)
你没有使用startTime吗?
long startTime = System.currentTimeMillis();
currTime = System.currentTimeMillis() - startTime
现在currTime将具有以毫秒为单位的时间差。
答案 1 :(得分:0)
您必须在循环开始之前获取当前时间戳:
startTime = System.currentTimeMillis(); //get timestamp
//the condition is waaaay off, basically equals to while (true) - more on that later
while (curTime > 1000){
input = TextIO.getlnDouble();
if (input = Math.abs(randNum)){
System.out.println("You got the correct answer");
} // End if statement
else {
System.out.println("You did not have the correct answer");
System.out.println("The number was" + randNum + ".");
} // End else statement
} // End while statement
curTime = System.currentTimeMillis(); //get timestamp again
System.out.println("Game took " + ((curTime-startTime)/1000) + " seconds");
来自System课程的文档:
public static long currentTimeMillis()
以毫秒为单位返回当前时间。请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大。例如,许多操作系统以几十毫秒为单位测量时间。
有关“计算机时间”与协调世界时(UTC)之间可能出现的轻微差异的讨论,请参阅类日期说明。
<强>返回:强>
当前时间与1970年1月1日午夜时间之间的差异,以毫秒为单位。
所以为了获得游戏的持续时间,你必须采取两个时间戳,并从后者中提取后者......
此外,while循环条件是关闭...这
while (curTime > 1000){
基本上是true
...... 1970年1月1日00:00:00到00:00:01只会出现错误
你可能会有这样的事情:
while(curTime-startTime > 10000) { //remember, value is ms!
//...loop content
curTime = System.currentTimeInMillis(); //update timestamp
}
但它不会让游戏在10秒后完全结束。如果你想限制游戏可以持续多长时间,这是一种不同的cookie - 你必须有另一个线程才能完成...