Представление цвета при каждом нажатии кнопки (лямбда-выражение) - PullRequest
0 голосов
/ 14 января 2019

При каждом нажатии кнопки я хочу установить определенный цвет. Прямо сейчас пользователь может написать int и представить соответствующий цвет (без ввода соответствующего int каждый раз). Я хочу изменить это, хотя. Каждый раз, когда пользователь нажимает кнопку, должен отображаться следующий цвет, но я не знаю, как переписать код. Я пытался выполнить цикл while и for, но у меня были проблемы с переменной, используемой в лямбда-выражении (что, по-видимому, должно быть окончательным)?

board.setButton2Text("Select"); 
board.setButton2Action(() -> {
    int c = 0;
    while(!(c > 0 && c < 7)) {
        try {
            c = IO.inputInt("Type an int ranging from 1 to 6");
        } catch (RuntimeException e) {
            continue;
        }
    }
    currentCode.setColor(selectedCircle, c);
    drawCode(X_START, Y_START + LINE_SPACING * (6 - currentTry), currentCode);
});

Прямо сейчас это выглядит так

enter image description here

1 Ответ

0 голосов
/ 14 января 2019

Измените свой код, который реагирует на нажатие кнопки. Этот код должен:

  1. Получить текущий установленный цвет.
  2. Добавьте один к этому номеру цвета.
  3. Если это новое число превышает лимит (0-7), циклически повторяется.
  4. Установите цвет на новый номер цвета.

Примерно так:

board.setButton2Action( () -> {
        // On each click of the button, rotate to the next color in a sequence of colors numbered 0-7. 
        int c = currentCode.getColor( … ) ; // TODO: Add assertion tests to verify you get back a valid value as expected.
        c = ( c + 1 ) ;  // Increment the color.
        if( c == 8 ) {  // If past the limit…
            c = 0 ;     // …go back to first number.
        }
        currentCode.setColor( selectedCircle , c ) ;
        drawCode( X_START , Y_START + LINE_SPACING * ( 6 - currentTry ) , currentCode ) ;
    }
);

Я не понимаю, как ваша лямбда будет проблемой здесь. Переход на код, как я показал здесь, не затрагивает никаких дополнительных объектов, выходящих за рамки лямбды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...