Современная реализация классической игры 2048, построенная на Next.js с TypeScript и SCSS.
- Современный UI/UX с плавными анимациями и отзывчивым дизайном
- 5 уникальных тем (GIF, Neon, Sunset, Forest, Classic)
- TypeScript для типобезопасности
- SCSS модули для стилизации
- Jest тесты для надежности кода
- CSS Variables для динамического переключения тем
npm installnpm run devОткройте http://localhost:3000 в браузере.
npm run build
npm start# Запуск всех тестов
npm test
# Тесты в режиме наблюдения
npm run test:watch
# Тесты с покрытием
npm run test:coverage- Клавиатура: Стрелки (↑↓←→)
- Свайпы: На мобильных устройствах
- Мышь: Клик по кнопкам
- GIF Theme - Анимированные GIF плитки
- Neon Theme - Неоновые цвета с градиентами
- Sunset Theme - Теплые закатные тона
- Forest Theme - Природные зеленые оттенки
- Classic Theme - Классическая оригинальная тема
- Установка на устройство как нативное приложение
- Оффлайн режим - игра работает без интернета
- Кэширование ресурсов для быстрой загрузки
- Адаптивные иконки для всех размеров экранов
src/
├── components/ # React компоненты
│ ├── Board/ # Игровая доска
│ ├── Tile/ # Плитки (GIF версия)
│ ├── ColoredTile/ # Плитки (цветная версия)
│ ├── EmptyTile/ # Пустые ячейки
│ ├── ScoreCounter/ # Счетчик очков
│ ├── BestScore/ # Лучший счет
│ ├── NewGameButton/ # Кнопка новой игры
│ ├── RightPanel/ # Правая панель
│ └── ThemeSelector/ # Выбор темы
├── hooks/ # React хуки
│ ├── useTheme.ts # Управление темами
│ └── useThemeStyles.ts # Стили тем
├── utils/ # Утилиты
│ ├── gameLogic.ts # Логика игры
│ ├── useSwipe.ts # Свайп жесты
│ └── types.ts # TypeScript типы
├── styles/ # Глобальные стили
├── theme/ # Конфигурация тем
└── pages/ # Next.js страницы
Проект включает полный набор тестов для игровой логики:
- Инициализация доски
- Добавление новых плиток
- Движение плиток во всех направлениях
- Слияние плиток
- Проверка окончания игры
- Утилитарные функции
Проект использует CSS Variables для динамического переключения тем:
:root {
--app-bg: #57407c;
--title-color: #ffffff;
--board-bg: transparent;
--board-border: #6b46c1;
--empty-tile-bg: #3d2963;
--score-counter-bg: linear-gradient(135deg, #6b46c1 0%, #805ad5 100%);
/* ... и другие переменные */
}- Next.js 14 - React фреймворк
- TypeScript - Типизация
- SCSS Modules - Стилизация
- Jest + Testing Library - Тестирование
- Service Worker - PWA функциональность
- CSS Variables - Динамические темы
- Framer Motion - Анимации