Как правило, когда у вас есть три уровня вложенных циклов, самое время разбить ваш метод на части. Этот код будет выглядеть намного проще, если вы реорганизуете поиск цвета из кода, который повторяет поиск. Это может выглядеть так.
public class BreakWhenNoYellow {
public static void main(String[] args) {
BufferedImage capture = null;
Rectangle screenRegion = new Rectangle(70, 102, 200, 220);
do {
capture = new Robot().createScreenCapture(screenRegion);
} while (containsColor(capture, Color.YELLOW));
}
private boolean containsColor(BufferedImage image, Color toFind) {
for (int y = 0; y < image.getHeight(); y++) {
for (int x = 0; x < image.getWidth(); x++) {
if (toFind.equals(new Color(image.getRGB(x, y)))) {
return true;
}
}
}
return false;
}
}
Здесь второй метод проверяет изображение на наличие цвета. Если он находит правильный цвет, он немедленно возвращает true
и больше не проверяет. Возвращается false
только после проверки всего изображения, если цвет не найден.
Метод main
просто захватывает необходимую область снова и снова и использует второй метод для проверки на желтый. Как только желтый не найден, он выйдет.