-1

「スペースインベーダー風」のゲームを作っています。あなた(プレイヤー)は画面下部を左右に移動します。各窓には敵が1人いて、窓に移動して撃つ必要があります。

私は敵のポップアップ システムに取り組んでいます。敵がランダムで 3 秒ごとに変化するウィンドウ。これが私のコードです:

int enemylocation = new Random().nextInt(2) +1;
    if(enemylocation==1){
        enemy1.setFilter(Image.FILTER_NEAREST);
        enemy1.draw(200,170,s*10);
    }
    if(enemylocation==2){
        enemy2.setFilter(Image.FILTER_NEAREST);
        enemy2.draw(200,360,s*10);

    }

すべてが機能しますが、乱数部分は常に新しい番号を選択しているため、両方のウィンドウがちらつきます。一定ではなく、3 秒ごとに敵の位置の値を変更するようにタイマーを遅らせるにはどうすればよいですか? 機能するティック システムがないため、TimerTask を使用する必要があります。

ありがとう

4

2 に答える 2

0

こんな使い方ができますjava.util.Timer。この後、質問を繰り返さないことを願っています。

import java.util.Timer;
import java.util.TimerTask;

public class TimerDemo {
    final static Random ran = new Random();
    static int enemylocation = 0;
    static Timer tm = new Timer();
    static long startTime = System.currentTimeMillis();

    public static void main(String[] a) {
        tm.schedule(new TimerTask() {

            @Override
            public void run() {
                enemylocation = ran.nextInt(2) + 1;
                System.out.println("enemylocation:" + enemylocation);
                System.out.println("time:" 
                         + (System.currentTimeMillis() - startTime) / 1000);
            }
        }, 1, 3000);

    }

}
于 2013-07-25T19:34:43.007 に答える
0

スニペットに TimerTask がありません。いずれにせよ、TimerTask には遅延を設定できる引数があります。こちら を参照してください

これはミリ秒単位であることに注意してください。1 秒待つには、遅延を 1000 に設定します。

于 2013-07-25T19:12:56.810 に答える