Ваша проблема заключается в следующем:
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
, которое объявляет его тип кирпича, и иметь цвет, определяемый типом кирпича. Но это имеет отношение к этой дискуссии.
Урок здесь заключается в том, чтобы сделать ваши переменные доступными только для того, что необходимо. Не используйте глобальные, если вам не нужно, используйте местных жителей, где вы можете.