Files
hexo/README.md

69 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# hexo
Учебный проект. Игра, клон https://www.gamedesign.jp/games/dicewars/
## Запуск игры
```bash
npm run serve # Запустить веб-сервер (http://localhost:8080)
npm test # Запустить тесты
npm start # Консольная версия карты
```
## Настройки игры
При запуске можно выбрать:
- Количество игроков: 2-4
- Тип каждого игрока: Человек (Human) или AI бот
## Правила игры
### 1. Карта
- Гексагональная сетка 20×20 ячеек
- Каждая ячейка может быть:
- Проходима (пустая или принадлежит игроку)
- Непроходима (заблокирована)
### 2. Игровые единицы
- Кубик: 6-гранный, значения 1-6
- На поле может быть до 8 кубиков
- **Сила юнита**: `F = (cnt-1)*6 + current_dice`
- `cnt` — количество кубиков
- `current_dice` — значение верхнего кубика
### 3. Ход игры
#### Перемещение/Атака
- Можно ходить, если сила > 1
- На целевую клетку переходит `сила-1`, на исходной остаётся 1
- При атаке оба игрока бросают кости:
- Атакующий: `attack_roll = rnd(1..сила-1)`
- Защищающийся: `defense_roll = rnd(1..сила)`
#### Результат боя
- Если `attack_roll > defense_roll`:
- Атакующий побеждает, занимает клетку с `attack_roll-1`
- На исходной клетке остаётся 1
- Если `attack_roll <= defense_roll`:
- Атака отбита, атакующий уменьшается до 1
- Защитник остаётся с `defense_roll - attack_roll` (мин. 1)
#### Снабжение
- После хода игрок получает снабжение
- **Снабжение = размер наибольшей непрерывной территории**
- Непрерывная территория — связанные между собой клетки игрока
- Если территория разорвана врагом — считается только largest кусок
- Снабжение распределяется по 1 единице случайным клеткам (не максимальным)
- Максимум на клетке: 48 (8 кубиков × 6)
### 4. Победа
- Последний игрок, оставшийся с клетками на карте
## Управление
- **Клик** на свою клетку → выбор
- **Клик** на соседнюю вражескую/пустую → атака
- **Cancel** → отмена выбора
- **End Turn** → завершить ход