Задача #250, Этап #16 - Золотая Шахта
Сейчас, мы обновляем UI раз в секунду. Это нормально, но игра смотрелась бы лучше, если бы обновление было чаще. Например, в 10 раз. Ты должен будешь внести изменения в нескольких местах....
Сейчас, мы обновляем UI раз в секунду. Это нормально, но игра смотрелась бы лучше, если бы обновление было чаще. Например, в 10 раз. Ты должен будешь внести изменения в нескольких местах....
Наша игра будет взаимодействовать с пользователем двумя способами. Она будет перехватывать ввод с клавиатуры и печатать сообщения в консоль. Ты уже знаком с console.log, но в этот раз я советую использовать npm модуль terminal-kit....
Итак, ты уже экспортировал константу term, которая даст нам контроль над терминалом. Давай воспользуемся ей! Создай файл functions.js и экспортируй из него функцию init. init должна принимать один параметр term....
Поздравляю с прохождением третьего этапа! Тебе может показаться, что мы сделали слишком много действий, создали 4 файла, добавили новый модуль, а в результате выводим только одну строку на экран… Это, конечно, жаль, но в итоге код будет логично структурирован,...
Теперь, давай поработаем над функцией, которая будет использована, когда пользователь нажмет на кнопку G на клавиатуре. Создай и экспортируй функцию handleKeyPress(term, state) в файле handlers.js. handleKeyPress, должна вернуть другую функцию, другими словами замыкание....
Обработчик готов, теперь мы должны соединить его с событием нажатия клавиши. Но сначала улучшим функцию init. Она принимает один параметр и должна вызвать у него методы: clear(), чтобы очистить экран hideCursor(), чтобы спрятать курсор grabInput(), чтобы обрабатывать нажатия клавиш Внутри функции startMiningGame, после вызова init, вызови функцию term....
Итак, мы можем копать золото нажимая на клавишу ‘G’. Давай выведем результат наших действий на экран. Реализуй и экспортируй функцию updateGold(term, state) из functions.js Она должна переместить нас на координаты (25, 2), стереть остаток строки и вывести значение поля state....
Отлично! Ручной режим реализован, теперь можно подумать и об автоматизации. Добавь новое поле producers в config, который мы экспортируем из solution.js. Это должен быть массив объектов. У каждого элемента массива producers...
Сейчас, давай добавим возможность покупать новых производителей. Если ты создал производителей с id состоящими из одной цифры, ты все сделал правильно. Если нет, ты еще можешь это исправить. Нам нужно добавить новый функционал в функцию handleKeyPress....
В документе уже добавлен заголовок и пять элементов кнопок с цветами. При нажатии на любую из кнопок, цвет текста заголовка h2 должен меняться на указанный на кнопке. Для изменения цвета добавь свойство color через атрибут style....