Крестики-нолики #
О проекте #
В детстве ты, возможно, играл в крестики-нолики на бумаге. А теперь представь, что эта бумага превращается в экран, и ты сам создаешь игру! Этот проект — твоя первая встреча с JavaScript. Мы пройдем через переменные, функции и анимации, чтобы твоя версия крестиков-ноликов стала не просто рабочей, но стильной и впечатляющей!
Чему научишься #
- Переменные, функции и условия. Основы программирования, которые превратят твои идеи в работающий код.
- Работа с DOM. Узнаешь, как JavaScript может оживить элементы твоего HTML.
- БЭМ. Научишься осмысленно именовать классы.
- Анимации. Добавишь еще больше зрелищности странице.
Материалы для подготовки #
Последовательный список материалов в разделе Список задач ниже.
Техническое задание #
В правом верхнем углу Figma есть кнопка Play, по нажатию на которую можно запустить интерактивный макет.
- Программа должна соответствовать оригинальным правилам.
- CSS классы должны быть названы в соответствии с БЭМ методологией.
- При наведении на пустую клетку должна происходить анимация в соответствии с макетом: тень клетки уменьшается, а внутри клетки появляется полупрозрачный крестик или нолик, в зависимости от очереди хода. Когда пользователь убирает курсор с клетки анимация должна быть проиграна в обратном порядке.
- При победе одной из сторон вместо надписи “Result” должен появиться победитель “X Win!!!” или “O Win!!!”, а вместо надписи “Tic Tac Toe” кнопка “Restart”
- По нажатию кнопки “Restart” игра должна сброситься в исходное состояние
Заметки #
- Начни с верстки. Сначала сделай статически элементы с помощью HTML/CSS, а после этого добавь к ним логику на JS
Список задач #
Задания построены так, чтобы ты двигался маленькими шагами и сразу видел результат. Это снижает тревожность, помогает не перегореть и держать фокус. Эти задачи лучше выписать в заметки или напоминания и отмечать, чтобы легче видеть прогресс
Изучение технологий #
Основы программирования #
- Посмотреть Основы программирования для начинающих. Урок 1. Как работают программы. Решить практическое задание. Решить домашние задания.
- Посмотреть Основы программирования. Урок 2. Массивы. Решить домашние задания.
- Посмотреть Основы программирования. Урок 3. Как работает компьютер. Решить домашние задания.
- Посмотреть Основы программирования. Урок 4. Теория вычислимости. Решить домашние задания.
- Посмотреть Основы программирования. Урок 5. Функции в программировании для начинающих
- Побочное задание: прочитать книгу “Грокаем Алгоритмы”. Автор рассказывает про подходы к решению алгоритмов простым языком. Читай параллельно со следующими заданиями
JavaScript тренажер #
- Пройти Зачем нужен JavaScript?
- Пройти задание “Знакомимся с переключением тем”
- Пройти задание “Находим элемент с помощью querySelector”
- Пройти задание “Выводим элемент в консоль”
- Пройти задание “Добавляем класс элементу с помощью classList.add”
- Пройти задание “Объявляем переменную”
- Пройти задание “Знакомимся с обработчиком событий”
- Пройти задание “Переключаем тему по клику”
- Пройти задание “Знакомимся с classList.toggle”
- Пройти задание “Завершаем переключатель тем”
- Пройти задание “Знакомимся со свойством textContent”
- Пройти задание “Меняем текстовое содержимое элемента”
- Пройти задание “Раскомментируем код”
- Пройти задание “Получаем данные из поля ввода с помощью input.value”
- Пройти задание “Используем конкатенацию”
- Сохранить “Конспект «Основы JavaScript»” в закладки
JavaScript. Основные конструкции #
- Создать пустую папку для практики и инициализировать в ней git репозиторий
- Переменные и типы данных. Таймкоды: 0:00-17:16. Посмотреть, повторить за автором
- Сделать коммит
- Операции с переменными. Таймкоды: 17:16-28:32. Посмотреть, повторить за автором
- Сделать коммит
- Условия и конструкция switch case. Таймкоды: 28:32-41:08. Посмотреть, повторить за автором
- Сделать коммит
- Работа с массивами. Таймкоды: 41:08-1:07:53. Посмотреть, повторить за автором
- Сделать коммит
- Функции. Таймкоды: 1:07:53-1:25:05. Посмотреть, повторить за автором
- Сделать коммит
- Объекты. Таймкоды: 1:25:05-1:57:07. Посмотреть, повторить за автором
- Сделать коммит
Если остались вопросы, то обращайся к JavaScript учебнику. В нем теория разобрана более подробно
JavaScript. Практика #
- Решить задачу Конвертор температур
- Решить задачу Изменение IP-адреса
- Решить задачу Количество пассажиров на рейсе
- Решить задачу Сортировка людей по росту
- Решить задачу Драгоценности и камни
Выполнение проекта #
Коммиты бесплатные. Чем чаще ты делаешь коммиты - тем больше возможностей откатится к нужной версии в случае поломки или тупика
Верстка #
- Прочитать Быстрый старт БЭМ методологии. Остальные разделы опциональны
- Ознакомится с ТЗ и Макетом
- Создать проект с тремя файлами: index.html, styles.css и main.js. Подключить стили и js в html файл
- Подключить нормализующие стили (см. Резюме героя)
- Инициализировать git репозиторий и сделать коммит с текущими изменениями
- Создать задний фон
- Создать блок для игрового поля
- Создать элемент пустой клетки
- Добавить модификатор для клетки с Крестиком
- Добавить модификатор для клетки с Ноликом
- Сделать коммит с версткой без анимаций
- Добавить анимацию при наведении на пустую клетку
- Заполнить пустыми клетками игровое поле 3х3. Скорректировать стили игрового поля
- Добавить блок для отображения победителя с текстом “Result” по умолчанию
- Добавить блок с названием игры “Tic Tac Toe”
- Добавить кнопку “Restart”
- Сделать коммит с финальной версткой
Программирование #
- Прочитать Десять основных соглашений об именовании JavaScript. Перепроверяй себя всякий раз когда объявляешь функцию или переменную.
- Посмотреть методы массивов. Они помогут решить задачу проще
- Создать переменные для хранения состояний игры: чей сейчас ход, завершена ли игры, текущее состояние поля
- Добавить обработчик клика на каждую ячейку.
- Написать логику обработки хода (нажатия на ячейку).
- Определить чей сейчас ход
- Поставить нужную картинку на поле
- Проверить остались ли свободные ячейки на поле, завершена ли игра?
- Сменить активного игрока
- Сделать коммит
- Написать функцию проверки победителя
- Использовать функцию проверки победителя в обработке хода
- Сделать коммит
- Добавить обработчик кнопки “Restart”
- Сделать коммит
- Создать репозиторий на GitHub
- Загрузить свой проект на GitHub следуя шагам на странице репозитория
Готовые работы #
- https://github.com/SergeyLuzik/tic-tac-toe
- https://gitlab.com/dima.gutman91/tic-tac-toe/-/tree/develop
- https://github.com/BorysPresn/roadmap_tic-tac-toe
- https://github.com/fenyagg/roadmap/tree/main/tic-tac-toe
Обратная связь и контакты #
По любым вопросам пиши в чат Испытания багами, и подписывайся на канал @js_is_easy