Написал простенькую браузерную игрушку для устойства на должность Frontend разработчика
Распишу небольшое пояснение к классам и к работе скрипта.
Cards
- Объект, где хранятся все свойства и методы взаиможействия с колодой карт и вывод в DOM
Animatio
- Объект, где хранятся все методы взаимодействия с анимацией появления/скрытия/удаления узлов и элементов из DOM
UserControll
- Объект-обработчик действий, совершенных пользователем
Controller
- Объект отвечает за определние пар и подгрузку избражением перед началом игры
Score
- Объект отвечает за прибавление и вычитание очков
Так же на странице присутствует функция, которая отвечает за адаптацию расположения карт во время/после изменения окна браузера
Ниже методы и свойства объектов с описанием
Cards.deck
- Здесь хранятся всевозможные карты, названия ячеек массива соответствуют именам карт в img/card/*.png
Cards.Deck
- Уже отсортированный массив с рандомный расположением названий карт
Метод Cards.randomCards
- рандомно отбирает 9 карт
Метод Cards.CheckMatch
- Проверяет повторяемость карт в массиве и отсеивает лишние
Метод Cards.randomAll
- Добавляет остальные 9 карт
Метод Cards.random
- Перемешивает колоду карт
Метод Cards.ReturnCard
- Возвращает нужную карту
Метод Animation.SetCardsBack
- Анимация "Раскидывания из колоды" карт рубашкой вверх на игровое поле
Метод Animation.ViewAllCards
- Показывает фронтальную часть карт и запускает таймер для визуализации оставшего времени на запоминание карт пользователем
Метод Animation.ViewCard
- Показывает фронт конкретной карты
Метод Animation.HideAllCards
- Переворачивает карты рубашкой вверх (показывает бэк карты и удаляет фронт)
Метод Animation.HideThisTrueCards
- Выполняется, когда пользователь нашел 2 одинаковые карты. Убирает их с поля анимацией в правый угол
Метод Animation.HideThisFalseCards
- Выполняется, когда пользователь нашел 2 НЕодинаковые карты. Просто скрываем эти 2 карты
Метод Animation.Timer
- Показывает и скрывает таймер посредством уменьшением линии
Методы Animation.ViewScores
, Animation.ViewEnd
, Animation.ViewGame
- Открывает соответствующее поле
Методы UserControll.StartGame
, UserControll.restartGame
, UserControll.clickCard
- Отвечает за нажатие на соответствующую кнопку
Метод Controller.OnlyTwo
- Проверяет открыта ли еще одна карта
Метод Controller.CheckPair
- Проверяет одинаково ли они
Метод Controller.ImageLoader
- Подгружает изображения до начала игры
Чтобы на момент показа всех карт пользователю, все используемые карты подгружаются перед началом игры.
Карты фронтом появляются не сразу и удаляются из DOM, чтобы нельзя было из просто подглядеть в коде.