Update documentation for all recent features

This commit is contained in:
sokol
2026-02-22 11:08:02 +03:00
parent 3439d04a55
commit ed27ca93ab
2 changed files with 327 additions and 65 deletions

View File

@@ -6,7 +6,7 @@
```bash
npm run serve # Запустить веб-сервер (http://localhost:8080)
npm test # Запустить тесты
npm test # Запустить тесты (88 тестов)
npm start # Консольная версия карты
```
@@ -15,10 +15,15 @@ npm start # Консольная версия карты
При запуске игры открывается экран настройки:
1. **Выберите количество игроков**: 2, 3 или 4
2. **Настройте тип каждого игрока**:
2. **Выберите размер карты**:
- **Small (10×10)** — Быстрая игра на маленькой карте
- **Medium (15×15)** — Сбалансированный размер
- **Large (20×20)** — Стандартный размер (по умолчанию)
- **Extra Large (25×25)** — Большая карта для длительных игр
3. **Настройте тип каждого игрока**:
- **Human** — управление человеком (клики мышью)
- **AI Bot** — управление компьютером
3. Нажмите **Start Game** для начала игры
4. Нажмите **Start Game** для начала игры
### Комбинации игроков
@@ -34,7 +39,7 @@ npm start # Консольная версия карты
| P1 | 🟢 Зелёный | `#4ecca3` |
| P2 | 🔴 Красный | `#e94560` |
| P3 | 🟡 Жёлтый | `#f9ed69` |
| P4 | 🔵 Бирюзовый | `#a8e6cf` |
| P4 | 🔵 Бирюзовый | `#00adb5` |
## AI Bot
@@ -44,10 +49,11 @@ AI бот автоматически играет за выбранного иг
1. **Анализ поля** — бот оценивает все возможные ходы
2. **Приоритеты ходов**:
- 🎯 Атака слабого противника (высокий шанс победы)
- 📈 Захват пустых клеток (расширение территории)
- 🎯 Атака слабого противника (высокий шанс победы) — приоритет 100+
- 📈 Захват пустых клеток (расширение территории) — приоритет 50+
- 💪 Укрепление позиций (перемещение к сильным клеткам)
3. **Задержка мышления** — 1000 мс перед каждым ходом для естественности геймплея
4. **Несколько ходов за turn** — AI делает все возможные ходы подряд, затем завершает ход
### Индикаторы AI
@@ -55,14 +61,43 @@ AI бот автоматически играет за выбранного иг
- Во время хода AI в панели действий показано: *"AI is thinking..."*
- Кнопки управления отключены во время хода AI
### Логика принятия решений
```javascript
movePriority(move) {
let priority = 0;
// Атака слабого врага (высший приоритет)
if (move.type === 'attack') {
if (move.attackStrength > move.defenseStrength) {
priority += 100; // Высокий шанс победы
priority += move.attackStrength - move.defenseStrength;
} else {
priority -= 50; // Рискованная атака
}
}
// Расширение на пустые клетки (средний приоритет)
if (move.type === 'expand') {
priority += 50;
priority += move.attackStrength;
}
// Бонус за сильную позицию
priority += move.attackStrength * 0.5;
return priority;
}
```
## Правила игры
### 1. Карта
- Гексагональная сетка 20×20 ячеек
- Гексагональная сетка **10×10**, **15×15**, **20×20** или **25×25** ячеек
- Каждая ячейка может быть:
- **Проходима** (пустая или принадлежит игроку)
- **Непроходима** (заблокирована, серый цвет)
- **Непроходима** (заблокирована, серый цвет, ~15% карты)
### 2. Игровые единицы
@@ -72,6 +107,15 @@ AI бот автоматически играет за выбранного иг
- `cnt` — количество кубиков
- `current_dice` — значение верхнего кубика
**Примеры расчёта силы:**
| Кубики | Сила |
|--------|------|
| [4] | 4 |
| [6] | 6 |
| [6, 1] | 7 |
| [6, 6, 2] | 14 |
| [6, 6, 6, 6, 6, 6, 6, 6] | 48 (максимум) |
### 3. Ход игры
#### Перемещение/Атака
@@ -124,5 +168,38 @@ AI бот автоматически играет за выбранного иг
Игра поддерживает:
- **2-4 игрока** (любая комбинация людей и AI)
- **4 размера карты**: 10×10, 15×15, 20×20, 25×25
- **Случайная генерация карты** при каждом запуске
- **Случайные стартовые позиции** для игроков
## Стартовые позиции
Игроки размещаются в углах карты (позиции масштабируются с размером карты):
| Игрок | Позиция | Описание |
|-------|---------|----------|
| P1 | (offset, offset) | Верхний-левый угол |
| P2 | (size-1-offset, size-1-offset) | Нижний-правый угол |
| P3 | (offset, size-1-offset) | Нижний-левый угол |
| P4 | (size-1-offset, offset) | Верхний-правый угол |
`offset = max(1, floor(size / 10))`
Каждый игрок начинает с **силой 8** на своей стартовой позиции.
## Тестирование
Проект покрыт **88 тестами**, проверяющими:
- **Динамические размеры карт** (10×10, 15×15, 20×20, 25×25)
- **HexCell**: создание, расчёт силы, максимальная сила, добавление кубиков
- **HexMap**: генерация, соседи, снабжение, владение
- **Логика выбора целей**: атака врагов, захват пустых клеток, блокировка своих клеток
- **AIBot**: поиск ходов, приоритеты, выполнение ходов, завершение хода
- **Интеграционные тесты**: 4 AI бота одновременно, разные размеры карт
```bash
npm test
```
Все тесты проходят успешно ✅