На самом деле, если оставить текущий вариант алгоритма, то микроконтроллер будет делать следующее (учтите, что он выполняет задания очень-очень быстро):
• Программа говорит микроконтроллеру проверить кнопку.
• Микроконтроллер обнаруживает, что кнопка нажата.
• Дисплей замирает. Микроконтроллер ждет, когда кнопка будет нажата снова.
• Но он обнаруживает, что кнопка по-прежнему нажата, потому что игрок еще не успел отпустить ее.
• Микроконтроллер действует так: «Кнопка нажата, поэтому я должен возобновить быстрое отображение цифр».
В результате индикация на дисплее остановится лишь на мгновение.
Вот решение проблемы – дополнительный шаг в последовательности:
• Шаг 5А. Дождаться момента, когда игрок отпустит кнопку.
Это не даст компьютеру возможности вести дальнейший отсчет и отображать другие числа, пока игрок не будет готов.
Теперь все в порядке?
Нет, боюсь, что нет. Возможно, вам кажется, что процесс становится слишком трудоемким, но в таком случае я вынужден сказать: «извините, но таково программирование». Если кто-то говорит, что можно быстро набросать несколько команд и посмотреть, как они работают, то уверяю вас, что чаще всего это не так.
Существует еще одна проблема с кнопкой. Шаг 6 просит подождать, пока кнопка не будет нажата снова, чтобы запустить быстрое отображение. Отлично. Игрок нажимает кнопку, дисплей возобновляет индикацию цифр, но микроконтроллер настолько быстр, что он «промчится» через процесс обнуления текущего значения и отображения новой комбинации игральных костей прежде, чем игрок перестанет нажимать кнопку. В результате, когда микроконтроллер перейдет к Шагу 4, он обнаружит, что кнопка по-прежнему нажата, и снова «заморозит» дисплей.
Как быть? Возможно, мне следует добавить новый Шаг 7, который говорит микроконтроллеру подождать, пока кнопка будет отпущена, прежде чем продолжить быстрое отображение.
Это противоречит интуиции. Я не думаю, что все осознают необходимость нажать кнопку
Внимание! Программа должна делать то, что ожидает пользователь. Мы никогда не должны принуждать пользователя выполнять что-либо в угоду программе.
Внимание!
Внимание!