Using timers in games, am I right?

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();
            }