所以我正在用 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/