程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 使用MIDP2.0開發游戲(7)設計Scheduler

使用MIDP2.0開發游戲(7)設計Scheduler

編輯:JAVA編程入門知識

  Scheduler負責以固定的頻率執行每一幀,所需的時鐘由Clock提供,Scheduler還可以計算每幀所需時間和CPU占用率,以便可能的話動態調整任務。

  以下的Scheduler的實現參考自Marshall "Game Programming Gems 3"中的C++代碼:

  package game.engine.core;

  public class Scheduler {

      // clock:
      private Clock clock = new Clock();
      
      // 啟動Scheduler:
      public void start() {
          clock.start();
      }

      // 停止Scheduler:
      public void stop() {
          clock.stop();
      }

      public int getSystemTime() {
          return clock.getSystemTime();
      }

      public int getVirtualTime() {
          return clock.getVirtualTime();
      }
  
      // 執行完整的一幀:
      public void executeFrame() {
          System.out.println("-- start execute frame --");
          clock.beginFrame();
          int started = clock.getSystemTime();
          // do time task:
          System.out.println("doing time tasks...");
          try {
              Thread.sleep(500);
          }catch(InterruptedException ie) {}
          clock.advanceToEnd();
          // do frame task:
          System.out.println("doing frame tasks...");
          try {
              Thread.sleep(200);
          }catch(InterruptedException ie) {}
          // do render task:
          int end = clock.getSystemTime();
          int elapsed = end - started;
          int frameLength = clock.getFrameEnd() - clock.getFrameStart();
          System.out.println("elapsed: " + elapsed + ", frame: " + frameLength);
          System.out.println("cpu usage: " + (elapsed * 100 / frameLength) + "%");
          // cleanup:
          System.out.println("-- end execute frame -- ");
      }

  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved