Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java游戏开发人员:Timertask这段截取的代码_Java_Timer_Task - Fatal编程技术网

Java游戏开发人员:Timertask这段截取的代码

Java游戏开发人员:Timertask这段截取的代码,java,timer,task,Java,Timer,Task,我正在做一个“太空入侵者风格”的游戏。你(玩家)在屏幕底部左右移动。每个窗口将有一个敌人,你必须移动到窗口并射击 我正在研究敌人弹出系统。敌人随机出现的窗口,应每3秒更改一次。以下是我的代码: int enemylocation = new Random().nextInt(2) +1; if(enemylocation==1){ enemy1.setFilter(Image.FILTER_NEAREST); enemy1.draw(200,170,s*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秒更改一次EnemLocation的值,而不是持续更改?我需要使用TimerTask,因为我没有正常工作的滴答系统


谢谢

您的代码片段缺少TimerTask。无论如何,TimerTask有一个参数,您可以使用它设置延迟

请注意,这是以毫秒为单位的,因此为了等待1秒,请将延迟设置为1000。

这是您可以使用的方式。我希望在这之后你不要重复你的问题

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);

    }

}

同样的问题你已经问了5次了…@user2302825想想看,我的朋友。我不打算为你写整件事。无意冒犯,但你正在编写游戏,那么你至少应该知道如何在游戏中嵌入/使用此代码。另外,请看我提供的链接,试着理解这篇文章。@user2302825我的朋友你运行过这个
伪代码了吗。它每
3秒运行一次。我回答了您要求的部分
,即
定时器的使用。我还没有看到你的代码,所以我不确定那里出了什么问题。@user2302825根据你提供的信息,我真的无法告诉你。我将建议您调试代码,并找出出错的地方和原因。如果您使用的是
Eclipse
,那么