每次将Object添加到ArrayList时更新double

时间:2013-05-22 13:56:37

标签: java variables arraylist double updates

在我的游戏中,我希望所有的僵尸都有随机颜色。我已经想出了如何改变僵尸的颜色,但问题是我不是所有人都有不同的颜色但现在一种颜色应用于多个僵尸并且它需要一些时间才能下一个颜色是适用于下一个僵尸。下面的代码是我目前用于添加僵尸的代码。

    public void initZombie(){ 
     for(int i = 0; i < player.getZombies(); i++){
      int thaXSize = xSize + 800;
      randomXSpawn = Math.random() * thaXSize + xSize;
      randomYSpawn = Math.random() * ySize;
      zombies.add(new Zombie(randomXSpawn,randomYSpawn));
      randR = Math.random() * 255;
      randG = Math.random() * 255;
      randB = Math.random() * 255;
     }
for(int i = 0; i < zombies.size(); i++){
            Zombie z = (Zombie) zombies.get(i);
            int j, k, red, green, blue, alpha;
            for(j = 0; j < 64; j++){
                for(k = 0; k < 64; k++){
                    Color c = new Color(z.getBrImage().getRGB(j, k));
                    red = c.getRed();
                    green = c.getGreen();
                    blue = c.getBlue();
                    alpha = c.getAlpha();
                    int rgb = new Color((int) randR, (int) randG, (int) randB, alpha).getRGB();
                    if(red == 0 && green == 0 && blue == 178){
                        z.getBrImage().setRGB(j, k, rgb);
                    }
                }
            }
        }
    }

我希望每次添加一个僵尸时都会更新randRrandGrandB个变量,以便它们中的非变体具有相同的颜色,我将如何实现此目标?

2 个答案:

答案 0 :(得分:2)

很难说,你在做什么,但是这个

zombies.add(new Zombie(randomXSpawn,randomYSpawn));
randR = Math.random() * 255 + 0;
randG = Math.random() * 255 + 0;
randB = Math.random() * 255 + 0;

看起来不像随机颜色组件是之前添加过该行的新僵尸的属性。

一个想法是在zombie构造函数中添加Color rgb参数,并在真正创建它时设置颜色。

答案 1 :(得分:1)

我们可以尝试将RGB颜色添加到僵尸类本身,这样每次创建一个新的僵尸时它都有自己的颜色。这可以通过构造函数完成,如下所示:

class Zombie{

    int randR;
    int randG;
    int randB;

    double randomXSpawn;
    double randomYSpawn;

    public Zombie(double randomXSpawn, double randomYSpawn) {
        super();
        this.randomXSpawn = randomXSpawn;
        this.randomYSpawn = randomYSpawn;

        randR = (int)Math.random() * 255;
        randG = (int)Math.random() * 255;
        randB = (int)Math.random() * 255;
    }   
}