2014-02-10 62 views
2

我做了一个游戏,你是一个围绕屏幕移动并在屏幕上产卵时避开其他圈子的圆圈。我有一个延迟计时器,可以在特定时间产生敌人,但这不是很好的编码,因为我对Java很陌生。如果任何人都可以整理代码或就如何更好地提供建议,我会非常感激。清理我的延迟计时器

注意:spawnTime是一个很长的设置System.currentTimeMillis(),timesDelay是一个双重设置为1.0,spawnRateCounter是一个int设置为0.此外,此代码正在awt计时器中运行,所以它正在运行一次又一次。

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(); 
    } 
} 
+1

什么不能在你的代码中工作,你需要帮助修复? – mdewitt

+0

与上面类似的评论,你的意思是“它不太好”? –

回答

0

关于我可以在这里做的唯一的评论是,您每次调用方法时都会“随机”构造。

通常我做的是添加随机的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(); 
+0

谢谢,Util类会被用于其他事情吗?我能否在其中包含其他java.util项目? – BlastMcGuirk