Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  Using timers in games, am I right?  (Read 684 times)
0 Members and 1 Guest are viewing this topic.
Offline K.I.L.E.R

JGO Strike Force
***

Posts: 764
Medals: 1


Java games rock!


« on: 2005-02-08 01:38:37 »

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:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
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:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
//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();
            }

Vorax:
Is there a name for a "redneck" programmer?

Jeff:
Unemployed. Wink
Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.183 seconds with 20 queries.