我试图在一款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
秒调用一次。