В этом репозитории реализован MVP карточкой игры "Мемо" по тех.заданию
Проект задеплоен на gh pages: https://skypro-web-developer.github.io/react-memo/
Проект реализован на основе шаблона Create React App.
- Установите зависимости командой
npm install - Запустите dev сервер
npm start - Откройте адрес в браузере
Для стилей в коде используются css modules.
Настроены eslint и prettier. Корректность кода проверяется автоматически перед каждым коммитом с помощью lefthook (аналог husky). Закомитить код, который не проходит проверку eslint не получится.
Запускает приложение в режиме разработки.
Откройте http://localhost:3000 чтобы посмотреть его в браузере.
Собирает оптимизированный и минифицированный продакшен билд приложения в папку build.
После сборке, приложение готово к деплою.
Деплоит приложение в github pages. По сути, запускает сборку и коммитит билд в ветку gh-pages.
(!) github pages должен быть включен в настройках репозитория и настроен на ветку gh-pages
Запускает eslint проверку кода, эта же команда запускается перед каждым коммитом. Если не получается закоммитить, попробуйте запустить эту команду и исправить все ошибки и предупреждения.
В игре реализован счётчик ошибок, который показывает количество оставшихся попыток.
- "Осталось попыток: X"
Этот формат позволяет игрокам легко понять, сколько попыток у них осталось, без отвлечения от игры. Использование красного цвета привлекает внимание к этой важной информации.
- Инициализация игры: O(n)
- Игра инициализируется на основе количества карт. Чем больше карт, тем больше времени потребуется для их инициализации.
- Обработка клика по карте: O(1)
- Время на обработку клика по карте фиксированное, так как это простое действие — переворот карты.
- Проверка совпадений: O(1)
- Проверка совпадения двух карт осуществляется мгновенно, так как это сравнение двух значений.
- Проверка выигрыша: O(n)
- Для проверки выигрыша необходимо пройти по всем картам, чтобы убедиться, что все пары найдены.
- Перемешивание карт: O(n log n)
- Перемешивание карт реализовано с использованием алгоритма, временная сложность которого составляет O(n log n), что характерно для эффективных алгоритмов сортировки.