-1

時間ごとにレベルが上がるゲームを開発しています。生成される敵の数も増加しますが、敵を更新するコードをどこに置くべきか正確にはわかりません。

そして、時間を参照として使用する際に問題が発生しました。beginTime(System.currenttimemillis) と timediff(System.currenttimemillis-beginTime) を格納する Time クラスを作成し、それらをスレッド クラスでインスタンス化したので、ゲームの現在の時間状態を取得しますが、特に更新メソッドでゲームパネル クラスで使用している場合、格納されている値を比較すると、値があっても条件が無視されます。

if(time.getTimeDiff()==3000){
    enemy.update();
}

3秒後にゲームが始まるはずなのですが、条件をつければダミーを1体置いても敵が来ません。

誰かが私にすべてを明確に説明できれば、本当に感謝しています。

4

2 に答える 2

0

多分あなたはこれを試してみるべきですか?

if (System.currentTimeMillis() - start > 3000)
{
   updateEnemy();
   start = System.currentTimeMillis();
}

編集

難易度を上げたい場合は、3000 を変数に置き換えます。次のように: int waitTime = 3000;

次に、ゲームの開始時間を取得します。

long gameStart = System.currentTimeMillis();

後で確認します。

if (timeEllaspsedSinceStart > howManySecondsTilLevelUp)
{
     waitTime -= howMuchLessYouWantToWait;
}
于 2012-08-28T16:37:50.857 に答える
0

これは私のために働く:

これは、タイマーとして機能する私が書いたクラスです。

public class Timer {

    Long startTime;
    int delayTime;

    public Timer() {

    }

    public Timer(int delayTime) {
        this.delayTime = delayTime;

    }

    public void setDelayTime(int delayTime) {
        this.delayTime = delayTime;

    }

    public boolean delay() {
        if(this.startTime == null) {
            this.startTime = System.currentTimeMillis();
        }

        if(startTime + this.delayTime < System.currentTimeMillis()) {
            this.startTime = null;
            return true;
        }
        else {
            return false;
        }

    }

    public void reset() {
        this.startTime = System.currentTimeMillis();

    }


}

update メソッドで、次のように新しい敵を生成する必要があるかどうかを確認できます。

Timer spawnEnemyTimer = new Timer(5000); // 5 seconds

public void update() {
if(spawnEnemyTimer.update() == true) {
// spawn new enemy!
// Timer will automatically reset!
}

}

これが役立つことを願っています!

于 2012-08-28T16:59:30.827 に答える