-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 回答