gpt4 book ai didi

java - 如何在 IF 语句中定位随机颜色变量?

转载 作者:行者123 更新时间:2023-12-01 19:29:16 27 4
gpt4 key购买 nike

我有一个问题是从我上一篇文章中选择的最佳答案中得出的: How can I use randomisation to specify different object parameters to a single iteration in a loop?我是堆栈新手,不确定引用该帖子的最佳方式。

我已经按照上面帖子的建议编写了代码,但是,现在我正在尝试让一种方法根据通过我的“球”对象交互的“砖 block ”的颜色运行不同的代码行:

public Color brickColour;


public GameObj( int x, int y, int w, int h, Color c ){
topX = x;
topY = y;
width = w;
height = h;
colour = c;
}

public void initialiseGame(){
Random random = new Random();
int yellowBrick = random.nextInt(5);
for (int i = 0; i < 5; i++) {
brickColour = i == yellowBrick ? Color.YELLOWGREEN : Color.BLUE;
GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, brickColour);
brick.moveX(75);
brick.visible = true;
bricks.add(brick);
System.out.println("Model:: Create Brick =" + brick);
}
}

public synchronized void updateGame(){
for(GameObj brick: bricks){
if (ball.hitBy(brick)){
if(brickColour.equals(Color.YELLOWGREEN)){
ball.changeDirectionY();
addToScore(HIT_BRICK);
brick.visible = false;
Debug.trace("Model::Brick Hit YELLOWGREEN = " + brick);
startGame();
}else {
ball.changeDirectionY();
addToScore(HIT_BRICK);
brick.visible = false;
Debug.trace("Model::Brick Hit = " + brick);
}
}
}
}

我已经测试了该程序,当 YELLOWGREEN 'brick' 被击中时,它仍在运行 else 语句。然后我打印了brickColour变量并得到了“0x0000ffff”,尽管如此,即使将其用作color.equals()参数中的字符串,它也不起作用。我该如何准确定位黄绿色砖 block 对象?

最佳答案

您的问题在于:

brickColour = i == yellowBrick ? Color.YELLOWGREEN : Color.BLUE;

您已在此处定义了一个全局变量,并且正在使用其中最新的一组变量。您应该将其设为局部变量,而不是在方法之间重复使用它。

for (int i = 0; i < 5; i++) {
Color brickColour = i == yellowBrick ? Color.YELLOWGREEN : Color.BLUE;
GameObj brick = new GameObj(i*100, 100, BRICK_WIDTH, BRICK_HEIGHT, brickColour);
// omitted for answer
}

然后在进行检查时:

for(GameObj brick: bricks){
if (ball.hitBy(brick)){
if(brick.brickColour == Color.YELLOWGREEN) {
// yellow logic
} else {
// blue logic
}
}
}

当然,使用颜色本身就是一个相当糟糕的设计决策。相反,您希望有一个 GameObj 的属性来声明其砖 block 类型,并具有由砖 block 类型确定的颜色。但这与本次讨论无关。

这里的教训是让变量的范围仅限于必要的范围。如果不需要,就不要使用全局变量,尽可能使用局部变量。

关于java - 如何在 IF 语句中定位随机颜色变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60291055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com