如何为每次int更改创建计时器?JAVA

如何为每次int更改创建计时器?JAVA,java,random,time,timer,int,Java,Random,Time,Timer,Int,我试图在一个2d游戏中为敌人创造行为,这是为了好玩、练习和学习。我做它运动的方式是让它随机地改变它的坐标,改变量是5到5,但它做得非常快 这是我的密码 public void EnemyMovement() { Random randomnum = new Random(); enemyX += randomnum.nextInt(5); enemyX -= randomnum.nextInt(5); enemyY += randomnum.nextInt(5); enemyY -=

我试图在一个2d游戏中为敌人创造行为,这是为了好玩、练习和学习。我做它运动的方式是让它随机地改变它的坐标,改变量是5到5,但它做得非常快

这是我的密码

public void EnemyMovement() 
    {
Random randomnum = new Random();
enemyX += randomnum.nextInt(5);
enemyX -= randomnum.nextInt(5);
enemyY += randomnum.nextInt(5);
enemyY -= randomnum.nextInt(5);
}

您可以使用ScheduledExecutorService创建在后台运行的新线程。然后,它将以指定的间隔执行给定的任务

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

import java.util.Random;

public class TimeMove {

    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();;
    Random randomnum = new Random();

    public void moveNow() {
        int moveX = randomnum.nextInt(5);
        int moveY = randomnum.nextInt(5);
        System.out.println("Moving " + moveX + ", " + moveY);
    }

    public void startRandomMover()  {
        executor.scheduleAtFixedRate(new Runnable()
        {
            public void run() {
                moveNow();
            }
        }, 0, 1, TimeUnit.SECONDS);
    }

    public static void main(String[] args) {
        TimeMove mover = new TimeMove();
        mover.startRandomMover();
    }
}

注意代码0,1,TimeUnit.SECONDS。这意味着计时器将以0秒的延迟开始,然后每1秒调用一次。

在2d游戏中使用javax.swing.timer。如果要使其变慢,可以使用Thread.sleep1000;我会调查马苏德·拉吉耶夫,这使得整个游戏以1fps的速度运行。你可以根据你的要求增加计时