0

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

    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);
                    }
                }
            }
        }
    }

我希望randR,randGrandB变量在每次添加一个僵尸时更新,这样它们中的任何一个都不会具有相同的颜色,我将如何实现这一点?

4

2 回答 2

2

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

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

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

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

于 2013-05-22T14:01:06.577 回答
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;
    }   
}
于 2013-05-22T14:06:06.763 回答