Java随机颜色 block

标签 java random breakout

所以我正在用 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();
    }
}

最佳答案

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

无论你在这里做什么,你所有的方 block 都会得到相同的颜色。

一些可能的重构:

不要使用 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()];
    }

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

关于Java随机颜色 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652637/

相关文章:

java - 在 socket.receive(packet) 上中断一个线程;抛出错误

java - Struts2 CRUD 删除不起作用

java - 获取类的参数名称以将其传递给java中的其他方法

javascript - Javascript 游戏的开始屏幕/可点击的播放按钮

java - libgdx 中的突破球碰撞

java - 通过 session 将属性从一个 Portlet 传递到另一个 Portlet

javascript - 在 JavaScript 中生成一个两位数的正随机数

java - 如何按设定的时间间隔生成随机数?

python - 打印由随机数选择的变量

java - 为什么每次我们想用方向键移动图形时都需要使用计时器?