Update documentation for multi-player and AI features
This commit is contained in:
92
README.md
92
README.md
@@ -1,37 +1,69 @@
|
||||
# hexo
|
||||
|
||||
Это учебный проект. Игра, клон https://www.gamedesign.jp/games/dicewars/
|
||||
Учебный проект. Игра, клон https://www.gamedesign.jp/games/dicewars/
|
||||
|
||||
1. Генерируемкая карта
|
||||
1. ккаждое поле - ячейка гексагон
|
||||
2. размер карты 20 х 20 ячеек
|
||||
3. каждое поле может быть доступно для игроков или быть непроходимо для всех
|
||||
4. каджое принадлежащее игроку поле дет ему +1 единицу снабжения
|
||||
## Запуск игры
|
||||
|
||||
2. игрок управляет кубиками
|
||||
1. кубик игральный 6 граннный
|
||||
2. на каждом поле может быть до 8 кубиков
|
||||
3. сила текущего юнита (ячейка с кубиками) расчитывается,
|
||||
F = (cnt-1)*full_dice + current_dice,
|
||||
где cnt - количество кубиков,
|
||||
full_dice - максимальное значение на кубике = 6
|
||||
сurrent_dice - верхний кубик с текущим значением от 1 до 6, расчитываемое в ходе игры
|
||||
```bash
|
||||
npm run serve # Запустить веб-сервер (http://localhost:8080)
|
||||
npm test # Запустить тесты
|
||||
npm start # Консольная версия карты
|
||||
```
|
||||
|
||||
3. правила игры
|
||||
1. вначале на карты помещается несколько кубиков для каждых игроков
|
||||
2. юзер может ходить юнитом, если
|
||||
1. его сила больше 1, при этом на захваченную клетку перемещается сила-1, а на исходной остается кубик с силой 1
|
||||
2. если на захватываемой клетке вражеские кубики, то оба игрока бросают кости
|
||||
1. у нападающего количество максимальной силыменьше на 1 исходной, F_attac=rnd(F-1)
|
||||
2. у защищающегося полная сила поля, F_defence=ктв(F)
|
||||
3.
|
||||
4. условия победы
|
||||
1. если F_attac>F_defence - то победа нападающего иначе защищающийся отбил атаку
|
||||
2. при победе нападающего он оставляет на исходной клетке кубик с силой 1, на захватываемую переводит F_attac-1,
|
||||
3. при пройгрыше у защищающегося отсается F_defence-F_attac, но не меньше 1
|
||||
3. После того, как все игроки походили, каждый получает снабжение по формуле
|
||||
S=sum(Cell), где Cell - значение снабжения с каждой клетки, принадлежащей игроку
|
||||
1. Саксимальное кол-во на клетке может быть 8*Full_dice
|
||||
2. Если все клетки игрока имеют максимальное колво силы, то ничего не добавляется.
|
||||
## Настройки игры
|
||||
|
||||
При запуске можно выбрать:
|
||||
- Количество игроков: 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** → завершить ход
|
||||
|
||||
|
||||
Reference in New Issue
Block a user