Веб-реализация классической игры "4 в ряд" (Connect Four) с использованием React и TypeScript.
Приложение в актуальной версии всегда можно найти тут https://four-in-row-tochka.vercel.app/
- Игровое поле: 7 колонок × 6 рядов
- Два режима игры:
- Игрок против игрока
- Игрок против ИИ
- Отмена/возобновление ходов - полная история игры
- Автоматическое определение победителя по горизонтали, вертикали и диагонали
- Определение ничьи при заполнении поля
- Валидатор ходов для анализа игровой последовательности
- Анимации падения фишек
- Изменение размера поля
- Node.js (версия 17 или выше)
- npm или yarn
# Клонирование репозитория
git clone https://github.com/wswfws/four-in-row
cd four-in-row
# Установка зависимостей
npm install
# Запуск в режиме разработки
npm run start
# Сборка для production
npm run buildПриложение будет доступно по адресу: http://localhost:3000/
-
Чистая архитектура:
- Разделение логики и UI компонентов
- Типизированные интерфейсы
- Чстый CSS
- Имутабельные объкты с стиле React
-
Продвинутые возможности:
- Полная система отмены/повтора ходов
- Простой, но эффективный ИИ
- Валидатор для анализа игровых последовательностей
-
Качество кода:
- TypeScript для типобезопасности
- Модульная структура
- Переиспользуемые компоненты
- Читаемость и поддерживаемость
-
Пользовательский опыт:
- Интуитивный интерфейс
- Визуальная обратная связь
Реализована функция validate которая анализирует последовательность ходов и возвращает детальную информацию о
состоянии игры на каждом шаге.
const default_size: PoleSize = {height: 6, width: 7};
export default function validate(moves: number[], size = default_size): { [p: string]: GameState } {
}src/
│ App.tsx # Главный компонент приложения
│ config.ts # Конфигурационные параметры
│ index.css # Глобальные стили
│ index.tsx # Точка входа
│
├───ConnectFour/ # Компоненты игры
│
├───logic/ # Бизнес-логика игры
│ │ Bot.ts # Логика ИИ-ботa
│ │ CellByPlayer.ts # Управление ячейками по игрокам
│ │ Game.ts # Основная игровая логика
│ │ GamePole.ts # Логика игрового поля
│ │
│ └───Stack/ # Реализация стека
│ Stack.ts # Структура данных стек
│ StackNode.ts # Узел стека
│
├───tests/ # Тесты
│ validate.test.ts # Тесты валидатора ходов
│
└───types/ # TypeScript типы