Java随机颜色块

Java随机颜色块,java,random,breakout,Java,Random,Breakout,所以我正在用Java编程游戏breakout,我已经得到了一个包含砖块的数组,但是我想给砖块(或砖块行)随机颜色。 我有4种不同颜色的可能性;红,绿,蓝,黄。但我的代码如下所示,我只有在重新打开窗口和游戏时才能得到不同的颜色。 有人能帮我给这些方块加上随机的颜色吗 public void prepareBlocks() { int spacing = Breakout.BLOCKSPACING_Y; Random rand = new Random(); int n

所以我正在用Java编程游戏breakout,我已经得到了一个包含砖块的数组,但是我想给砖块(或砖块行)随机颜色。 我有4种不同颜色的可能性;红,绿,蓝,黄。但我的代码如下所示,我只有在重新打开窗口和游戏时才能得到不同的颜色。 有人能帮我给这些方块加上随机的颜色吗

public void prepareBlocks() {
    int spacing = Breakout.BLOCKSPACING_Y;

    Random rand = new Random();
    int  n = rand.nextInt(4) + 1;
    Color colour = new Color(n);

    if (n==1){
        colour = Color.red;
    } if (n==2){
        colour = Color.yellow;
    } if (n==3){
        colour = Color.green;
    } if (n==4){
        colour = Color.blue;
    }

    lines[0] = new Line(0, colour);
    lines[1] = new Line(BLOCKHEIGHT+spacing, colour);
    lines[2] = new Line(BLOCKHEIGHT*2+2*spacing, colour);
    lines[3] = new Line(BLOCKHEIGHT*3+3*spacing, colour);
    lines[4] = new Line(BLOCKHEIGHT*4+4*spacing, colour);
    lines[5] = new Line(BLOCKHEIGHT*5+5*spacing, colour);

    for(int i = 0; i<lines.length; i++) {
        blockCount += lines[i].numberblocks;
        lines[i].fill();
    }
}
public void prepareBlocks(){
int间距=Breakout.blockspating_Y;
Random rand=新的Random();
int n=兰特(4)+1;
颜色=新颜色(n);
如果(n==1){
颜色=颜色。红色;
}如果(n==2){
颜色=颜色。黄色;
}如果(n==3){
颜色=颜色。绿色;
}如果(n==4){
颜色=颜色。蓝色;
}
行[0]=新行(0,颜色);
行[1]=新行(块高+间距,颜色);
行[2]=新行(块高*2+2*间距,颜色);
行[3]=新行(块高*3+3*间距,颜色);
行[4]=新行(块高*4+4*间距,颜色);
行[5]=新行(块高*5+5*间距,颜色);

对于(int i=0;i假设您希望每一行具有相同的颜色,您只需在应用到新行之前插入随机数。经过一些代码清理后,这将如下所示:

public void prepareBlocks() {
    int spacing = Breakout.BLOCKSPACING_Y;

    Random rand = new Random();

    Color colour;
    for(int i=0; i<lines.length; i++){
       switch(rand.nextInt(4) + 1){
           case 1: colour = Color.red; break;
           case 2: colour = Color.yellow; break;
           case 3: colour = Color.green; break;
           case 4: colour = Color.blue; break;
           default: colour = new Color(n);
       } 
       lines[i] = new Line(BLOCKHEIGHT*i+i*spacing, colour);
       blockCount += lines[i].numberblocks;
       lines[i].fill();
    }
}
public void prepareBlocks(){
int间距=Breakout.blockspating_Y;
Random rand=新的Random();
颜色;

对于(int i=0;i假设您希望每一行具有相同的颜色,您只需在应用到新行之前插入随机数。经过一些代码清理后,这将如下所示:

public void prepareBlocks() {
    int spacing = Breakout.BLOCKSPACING_Y;

    Random rand = new Random();

    Color colour;
    for(int i=0; i<lines.length; i++){
       switch(rand.nextInt(4) + 1){
           case 1: colour = Color.red; break;
           case 2: colour = Color.yellow; break;
           case 3: colour = Color.green; break;
           case 4: colour = Color.blue; break;
           default: colour = new Color(n);
       } 
       lines[i] = new Line(BLOCKHEIGHT*i+i*spacing, colour);
       blockCount += lines[i].numberblocks;
       lines[i].fill();
    }
}
public void prepareBlocks(){
int间距=Breakout.blockspating_Y;
Random rand=新的Random();
颜色;
对于(int i=0;i
不管你在这里做什么,你所有的积木都会得到相同的颜色

一些可能的重构:

不要使用i的硬编码值,…在代码中更加动态:

private int getRandomIndex(){
  Random rand = new Random();
  return rand.nextInt(colors.length); // no need for + 
}

private Color[] colors = {Color.red, Color.yellow, Color.green, Color.blue};
这样,您就不需要添加if…每次您想要添加颜色时,只需将其添加到数组中即可。更不用说,它会缩短代码。 不过,您需要弄清楚如何正确添加Blockheight等

// ....
  for ( int i = 0; i < lines.length; i++ ){
    lines[i] = new Line(BLOCKHEIGHT + " everything else you need here", colors[getRandomIndex()];
    }
/。。。。
对于(int i=0;i
现在的问题是,所有线条都使用相同的颜色实例

不管你在这里做什么,你所有的积木都会得到相同的颜色

一些可能的重构:

不要使用i的硬编码值,…在代码中更加动态:

private int getRandomIndex(){
  Random rand = new Random();
  return rand.nextInt(colors.length); // no need for + 
}

private Color[] colors = {Color.red, Color.yellow, Color.green, Color.blue};
这样,您就不需要添加if…每次您想要添加颜色时,只需将其添加到数组中即可。更不用说,它会缩短代码。 不过,您需要弄清楚如何正确添加Blockheight等

// ....
  for ( int i = 0; i < lines.length; i++ ){
    lines[i] = new Line(BLOCKHEIGHT + " everything else you need here", colors[getRandomIndex()];
    }
/。。。。
对于(int i=0;i

您现在遇到的问题是,所有线条都使用相同的颜色实例。

在应用程序中的什么时候提供颜色?如果颜色仅在重新打开窗口时更新,则在更改颜色后可能需要重新绘制面板。您希望在应用程序中的什么时候提供颜色?如果颜色仅在重新打开窗口时更新,则可能需要在更改颜色后重新绘制面板。