Я не могу оставаться в тонусе, если не тренируюсь.
Со временем информация, которую я узнал в классе, во время практических упражнений и в ходе личных проектов, постепенно рассеивается. Для меня продолжение создания небольших проектов - даже простых - лучший способ сохранить материал. Я вынужден применять основы и держать прочный фундамент. Оттуда я могу расширить сложность и масштаб проекта, как мне нравится.
Мой последний практический проект был вдохновлен учебником по игре с набором текста Брэда Трэверси, который является частью его курса Udemy под названием «20 веб-проектов с ванильным Javascript». Хотя я заимствовал эту идею из работы Брэда, я не буду использовать созданный им стиль, и слова не будут жестко закодированы.
Я обновил проект для использования в приложении React, и я делаю его динамически воспроизводимым через API Wordnik, что позволяет мне случайным образом генерировать слово. Этот API - отличный ресурс для всех ваших потребностей в создании слов. Он имеет массу настраиваемых конечных точек и функций - определения, синонимы, части речи, произведения! Ниже я проиллюстрирую, как я начал этот проект, и продолжу в другом блоге по мере того, как буду стилизовать и расширять его.
Чтобы сначала снизить функциональность, я проигнорировал стили и заставил свои вызовы API работать в соответствии с определенными спецификациями. Перед реализацией части набора текста я хотел протестировать функциональность API и установить ограничения сложности в соответствии с длиной слова.
Вот самый простой дисплей, который я настраиваю в компоненте, который я называю WordReceiver.
Я создал простое раскрывающееся меню с тремя вариантами сложности, которые я свяжу с ответами Wordnik разной длины.
Напоминание: не забудьте скрыть ключи API в файле .env, размещенном в gitignore, или аналогичными методами!
В приведенном выше коде я приписываю сложность слов (произвольно) в зависимости от их длины, а затем вызываю Wordnik API через эту интерполированную информацию, сохраненную в состоянии. Теперь пользователь может выбрать один из трех уровней в раскрывающемся списке, а затем нажать кнопку, чтобы вернуть простое, среднее или сложное слово.
Зная, что эти элементы работают, я реализовал часть набора текста.
Я удалил кнопку для генерации слов и сделал ее кнопкой запуска, которая теперь будет генерировать первое слово в игре. После этого каждый вызов API для нового слова будет запускаться, когда пользователь правильно набирает слово.
Это так же просто, как сравнение двух слов - совпадает ли слово API с вводом пользователя. На данный момент у меня есть часть набора текста, содержащаяся в том же компоненте, но по мере расширения проекта я буду разделять свои функции.
Вот все, что вам нужно для ввода информации. Убедитесь, что у вас отключено автозаполнение, иначе вам не нужно будет дописывать текст! Кроме того, автофокус будет держать ваш курсор в поле ввода и готов к вводу.
Эта функция typeHandler запускается при изменении ввода, которое происходит при вводе. Затем функция сравнивает, соответствует ли это захваченное слово слову из API, и, если да, сбрасывает поле ввода на пустое и вызывает новое слово.
Сейчас эта игра не очень увлекательная. Но для этого нужно правильно сказать слово, прежде чем вам дадут новое.
В следующем блоге я объясню, как я увеличил сложность игрового процесса, разделил функциональность на различные компоненты, добавил таймер и счетчик, а также немного стилизовал.