frames passed / time taken to execute those frames = fps.
This is how I always understood it.
speed = distance / time.
I assume this is correct.
163ticks / 5 seconds = 32.6fps.
Right or wrong?
I’m using Sun’s timer which is updated in 1.5(Tiger).
It can now be run as a daemon.
This is how I execute my game logic.
Timer class:
public class GameIntervalTimer extends TimerTask
{
private Timer timer;
private boolean isConditionMet;
public GameIntervalTimer(String nameOfThread, long periodOfExecution)
{
try
{
timer = new Timer(nameOfThread, true);
timer.scheduleAtFixedRate(this, 0L, periodOfExecution);
}catch(Exception e)
{
System.out.println(e.getMessage());
}
isConditionMet = false;
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run()
{
this.isConditionMet = true;
}
/**
* Call this method after the timer has finished a round of execution.
* If you do not call this method at the appropriate time or not at all, you will have issues.
*/
public void resetTimeToExecute()
{
this.isConditionMet = false;
}
public void setTimerRateOfExecution( long periodOfExecution )
{
this.timer.scheduleAtFixedRate(this, 0L, periodOfExecution);
}
public boolean isConditionMet()
{
return this.isConditionMet;
}
}
How it’s used:
//this line of code is executed once in the constructor
timer = new GameIntervalTimer("Logic", 10);
if(timer.isConditionMet())
{
playerMadeTurn = true;
if(playerMadeTurn)
{
play.executeLogic();
playerMadeTurn = false;
}
System.out.println("executed " + ticks++);
timer.resetTimeToExecute();
}