我制作了一个游戏,你是一个围绕屏幕移动的圆圈,当它们在屏幕上产生时会闪避其他圆圈。我有一个延迟计时器,在某个时间产生一个敌人,但它不是很好的编码,因为我是Java的新手。如果有人能够对代码进行整理或提供更好的建议,我会非常感激。
注意:spawnTime是一个设置为System.currentTimeMillis()的long,timesDelay是一个设置为1.0的double,spawnRateCounter是一个设置为0的int。此外,这个代码正在一个awt Timer中运行,所以它再次运行再一次。
private final double delayRateChange = .75;
private void spawnEnemy() {
Random r = new Random();
if (System.currentTimeMillis() - spawnTime > (1000 * timesDelay)){
spawnRateCounter++;
if (spawnRateCounter == 5){
timesDelay*=delayRateChange;
spawnRateCounter = 0;
}
enemies.add(new Enemy(r.nextInt(500), r.nextInt(500),
r.nextInt(4), r.nextInt(4) + 1, r.nextInt(3)));
spawnTime = System.currentTimeMillis();
}
}
答案 0 :(得分:0)
关于我在这里唯一的评论是,每次调用该方法时,你都在“构建”随机。
通常我所做的是将Random添加到utils类中的内容:
public class Utils () {
private static Random random;
private Utils(){} //Only static methods
public static final Random getRandom() {
if(random == null) random = new Random();
return random;
}
public static final seedRandom(long seed) {
random = new Random(seed);
}
然后在您的代码中,您将替换:
Random r = new Random();
与
Random r = Utils.getRandom();