遊戲開發常需計時器記錄遊戲時間,時間結束則結束遊戲。本文介紹如何在 J2ME 中使用 Timer 與 TimerTask 實現計時器,並給出具體代碼實例。
Java.util 套件中有 TimerTask 類別,可擴展並實作 run() 方法編寫邏輯代碼。製作遊戲計時器很簡單:建立 GameClock 擴展 TimerTask,維護實例變數 timeLeft 記錄剩餘時間,每次 run() 執行將 timeLeft 減 1。有時需暫停與重新啟動,在 GameClock 加入 boolean 標記即可。GameClock 代碼如下:
package com.j2medev.gameclock;
import java.util.TimerTask;
public class GameClock extends TimerTask {
private int timeLeft = 60; // 計時器預設時間(秒)
private boolean pause = false;
public GameClock() { }
public GameClock(int value) { timeLeft = value; }
public void run() {
if (!pause) {
timeLeft--;
}
}
public void pause() { pause = true; }
public void resume() { pause = false; }
public int getTimeLeft() { return timeLeft; }
public void setTimeLeft(int value) { this.timeLeft = value; }
}
使用方式:建立 Timer 實例,排程 GameClock 每秒執行一次:
Timer timer = new Timer();
GameClock clock = new GameClock(60); // 60 秒
timer.schedule(clock, 0, 1000); // 立即開始,每 1000ms 執行一次
// 遊戲主迴圈中可隨時呼叫 clock.getTimeLeft() 取得剩餘時間
// 需暫停呼叫 clock.pause(),恢復呼叫 clock.resume()
// 時間歸零時結束遊戲邏輯
此實現簡潔高效,適合 J2ME 遊戲開發計時需求。