Это игра 4 в ряд, c возможностью переключать режимы: есть PvP (на два игрока), PvC (игрок против компьютера), CvC (компьютер против компьютера). Сделано на Vite с использованием React и TS
Каждый режим игры умеет анимировать ходы, менять игроков, а также проверять победу (и анимировать выигрышные клетки) или ничью
-
"Умный" ИИ для компьютерных игроков - умеет не просто сделать рандомный ход: функция computerMove также проверяет, есть ли победа у текущего игрока (и делает выигрышный ход если да), есть ли победа у оппонента (и делает ход туда чтобы не дать победить). В остальных случаях в 40% делает ходы в центре поля (там больше выигрышных комбинаций) или делает рандомный ход
-
Система ставок и баланса: в случае выигрыша ставка возвращается в размере x2, в случае ничьей - возвращается. Если баланс меньше 100, то режим PvC становится недоступен: пишу там, что заработать поинты можно будет в режиме против компьютера (200 поинтов за игру с компьютером начисляются в любом случае)
-
Есть кнопки Undo/Redo, которые работают во всех режимах и не ломают игру)) - в случае если мы отменяем выигрышный ход, то это состояние обновляется и флаг выигрыша не показывается (работает и в другую сторону - если тыкаем на redo выгрышного хода, то показывается выигрыш)
-
Есть автосохранение в LocalStorage (сохраняется и баланс, и игровое поле) и восстановление состояния из него в случае перезагрузки
-
Для второго задания (функции validator) - сделал отдельный экран: перейти в него получится, если на экране результатов матча нажать на кнопку "Validate this match". Окно с валидатором показывает результат игры (в случае победы показывает выигрышные клетки), а также показывает ходы обоих игроков
-
Вместо кучи useState использую один useReducer
- Весь проект собрал в отдельный файл - находится в папке dist. Запустить получится, если:
npm run preview- Для разработки:
npm install
npm run dev