Добро пожаловать в мою версию классической Крестики-нолики! Я создал игру Крестики-нолики с использованием React и SCSS, завершив её за примерно 6 часов. Игра предлагает режим одиночной игры против компьютера, всплывающее окно с объявлением победителя и счетчики выигрышей для обоих игроков. Хотя сетка настраиваемая до n x n
, текущая логика выигрыша поддерживает только 3 x 3
. Будущие улучшения включают более умные ходы компьютера и функциональность многопользовательской игры в реальном времени.
Обзор
- Общее время разработки: ~6 часов
- Используемые технологии: JavaScript (React) + SCSS
Правила игры
1. Цель
Цель игры — выстроить три своих символа (X или O) в горизонтальный, вертикальный или диагональный ряд на сетке 3 x 3
.
2. Порядок ходов
- Игрок А всегда начинает и играет за X.
- Компьютерный противник играет за O и делает свой ход сразу после Игрока А.
3. Игровой процесс
- Игроки по очереди ставят свои символы в пустые клетки на сетке.
- Первый игрок, который выстроит три символа, выигрывает игру.
4. Условия выигрыша
Игрок выигрывает, если он достигнет:
- Три символа в горизонтальном ряду
- Три символа в вертикальном столбце, или
- Три символа в диагональной линии
5. Рисование
Если все ячейки заполнены и ни один игрок не выполняет условия победы, игра заканчивается ничьей.
6. Учет очков
Счетчики побед отслеживают общее количество побед как Игрока A, так и компьютера.
Реализованные функции (MVP)
Вот что включено в эту версию игры:
- Играйте против компьютера: Увлекательный одиночный режим, в котором вы сражаетесь с компьютером
- Всплывающее окно объявления победителя: В конце каждой игры всплывающее окно показывает победителя.
- Счетчики побед: Отслеживайте общее количество побед как игрока, так и компьютера.
- Настраиваемая сетка: Создайте сетку
n x n
(хотя логика победы в настоящее время поддерживает только3 x 3
).
Возможные улучшения
Смотря в будущее, вот несколько областей для улучшения:
- [UX] Локальное хранилище для очков: Сохраняйте очки игры локально, чтобы они сохранялись после обновления браузера.
- [UX/Tech] Более умные ходы компьютера: Замените случайные ходы алгоритмом для более конкурентной игры.
- [UX] Многопользовательская игра в реальном времени: Включите возможность соревноваться двум игрокам в реальном времени с использованием технологий типа Socket.io.
- [Технология] Продвинутая организация SCSS: Переработайте SCSS с использованием миксинов, переменных и более эффективных техник структурирования.
- [UX/Технология] Грациозное ухудшение: Обеспечьте совместимость с немодернизированными браузерами для более широкой поддержки.
Установка и разработка
Необходимые условия
Прежде чем приступить, убедитесь, что у вас установлен Node.js (рекомендуемая версия: 6.4.1
).
Начало работы
-
Клонируйте репозиторий с GitHub.
2. Установите зависимости:
npm install
3. Запустите сервер разработки:
npm start
- Откройте http://localhost:3000 в браузере, чтобы просмотреть приложение.
4. (По желанию) Соберите проект для продакшена:
npm run build
Это создаст оптимизированную папку build
, готовую для развертывания.
Тестирование
Запустите тесты в интерактивном режиме отслеживания с:
npm test
Технические детали
Структура файлов
Проект следует стандартной структуре Create React App с модульным компонентным подходом.
src
├── index.js
├── App.css
├── App.js
├── Components
│ └── Board
│ ├── Board.scss
│ ├── Cross.jsx
│ ├── ScoreBoard.jsx
│ ├── index.jsx
│ ├── Round.jsx
│ └── Footer
│ ├── Footer.scss
│ ├── index.jsx
│ └── Header
│ ├── Header.scss
│ ├── index.jsx
├── utils
│ └── lib.js
public
├── index.html
Описание и подход
- Приложение было создано с помощью Create React App для быстрой настройки MVP.
- Игра инициализирует сетку
n x n
для игрового процесса. - Каждая ячейка имеет слушатель событий клика, позволяя Игроку A (X) сделать первый ход.
- Ход компьютера симулируется с помощью логики случайного выбора ячейки, которая потребует доработки для пользовательских размеров сетки.
- Использован SCSS для стилизации с акцентом на скорость, а не на сложность во время разработки.
Подход к тестированию
Ручные тесты
- Убедитесь, что компьютер делает ход после завершения Игрока A.
- Проверьте, заканчивается ли игра с объявлением победителя.
- Тестируйте автоматические ходы компьютера.
Потенциальные модульные тесты
- Проверьте, делает ли компьютер ход после Игрока A.
- Проверьте, отображает ли игра правильного победителя.
- Тестируйте крайние случаи для инициализации сетки и взаимодействий с пользователем.
Заключение
Спасибо за изучение моего проекта!
Вы можете найти полный исходный код и внести свой вклад в этот проект на GitHub. Давайте создадим классные вещи вместе!
Source:
https://dzone.com/articles/building-a-tic-tac-toe-game-using-react