225 lines
6.3 KiB
Markdown
225 lines
6.3 KiB
Markdown
# 🗺️ Тестовые карты для A* алгоритма
|
||
|
||
Эта папка содержит набор тестовых карт для проверки работы алгоритма A* с новыми правилами игры.
|
||
|
||
## 🎮 Новые правила
|
||
|
||
| Тип | Код | Символ | Правило |
|
||
|-----|-----|--------|---------|
|
||
| Дорога | 0 | ` ` | Ускорение ±2 |
|
||
| Камень | 1 | `#` | Можно проезжать, нельзя останавливаться |
|
||
| Снег | 2 | `~` | Ускорение ±1 |
|
||
| Лёд | 3 | `=` | Ускорение 0 (инерция) |
|
||
| Чекпоинт | 4 | `1-9` / `●` | Как дорога |
|
||
|
||
---
|
||
|
||
## 📂 Тестовые карты
|
||
|
||
### test-obstacles.json
|
||
**Назначение**: Проверка проезда через препятствия
|
||
|
||
```
|
||
S
|
||
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
# # # # # # # #
|
||
1
|
||
```
|
||
|
||
- Размер: 15×11
|
||
- Чекпоинты: 1
|
||
- Препятствия: 56
|
||
- **Результат**: ✅ 4 хода
|
||
|
||
---
|
||
|
||
### test-snow.json
|
||
**Назначение**: Проверка ограниченного маневрирования на снегу
|
||
|
||
```
|
||
S
|
||
|
||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||
~ ~ ~ ~ 1 ~ ~ ~ ~ ~
|
||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||
```
|
||
|
||
- Размер: 15×9
|
||
- Чекпоинты: 1
|
||
- Снег: 49 клеток
|
||
- **Результат**: ✅ 3 хода
|
||
- **Ускорения на снегу**: (1,1), (-1,0) — все в пределах ±1
|
||
|
||
---
|
||
|
||
### test-ice.json
|
||
**Назначение**: Проверка инерции на льду
|
||
|
||
```
|
||
S
|
||
|
||
= = = = = = = = = = =
|
||
= = = = = = = = = = =
|
||
= = = = = 1 = = = = =
|
||
= = = = = = = = = = =
|
||
= = = = = = = = = = =
|
||
```
|
||
|
||
- Размер: 18×9
|
||
- Чекпоинты: 1
|
||
- Лёд: 54 клетки
|
||
- **Результат**: ✅ 3 хода
|
||
- **Поведение**: Алгоритм не планирует остановки на льду
|
||
|
||
---
|
||
|
||
### test-combined.json
|
||
**Назначение**: Комплексная проверка всех типов поверхностей
|
||
|
||
```
|
||
S
|
||
|
||
1
|
||
# # # #
|
||
# # # #
|
||
# # # # 2
|
||
# # # # ~ ~ ~ ~ ~
|
||
~ ~ ~ ~ ~
|
||
~ ~ 3 ~ ~
|
||
~ ~ ~ ~ ~
|
||
~ ~ ~ ~ ~ = = = =
|
||
= = = =
|
||
= 4 = =
|
||
= = = =
|
||
```
|
||
|
||
- Размер: 20×15
|
||
- Чекпоинты: 4
|
||
- Препятствия: 16
|
||
- Снег: 24 клетки
|
||
- Лёд: 15 клеток
|
||
- **Результат**: ✅ 9 ходов
|
||
- **Проверки**:
|
||
- ✅ Проезд через препятствия
|
||
- ✅ Ограниченное ускорение на снегу
|
||
- ✅ Корректная работа на льду
|
||
|
||
---
|
||
|
||
## 🚀 Запуск тестов
|
||
|
||
### Компиляция
|
||
```bash
|
||
cd /home/tactile/dev/dotnet/racing
|
||
dotnet build racing-astar.csproj
|
||
```
|
||
|
||
### Запуск отдельного теста
|
||
```bash
|
||
# Тест препятствий
|
||
./bin/Debug/net8.0/racing-astar maps/test-obstacles.json
|
||
|
||
# Тест снега
|
||
./bin/Debug/net8.0/racing-astar maps/test-snow.json
|
||
|
||
# Тест льда
|
||
./bin/Debug/net8.0/racing-astar maps/test-ice.json
|
||
|
||
# Комплексный тест
|
||
./bin/Debug/net8.0/racing-astar maps/test-combined.json
|
||
```
|
||
|
||
### Запуск всех тестов
|
||
```bash
|
||
#!/bin/bash
|
||
for map in maps/test-*.json; do
|
||
echo "========================================="
|
||
echo "Testing: $map"
|
||
echo "========================================="
|
||
./bin/Debug/net8.0/racing-astar "$map"
|
||
echo ""
|
||
done
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Ожидаемые результаты
|
||
|
||
| Карта | Ходов | Итераций | Время |
|
||
|-------|-------|----------|-------|
|
||
| test-obstacles.json | 4 | 24 | <0.05с |
|
||
| test-snow.json | 3 | 42 | <0.05с |
|
||
| test-ice.json | 3 | 34 | <0.05с |
|
||
| test-combined.json | 9 | 21 | <0.05с |
|
||
|
||
---
|
||
|
||
## 🎨 Легенда визуализации
|
||
|
||
### В картах JSON
|
||
- `0` = дорога
|
||
- `1` = камень (препятствие)
|
||
- `2` = снег
|
||
- `3` = лёд
|
||
- `4` = чекпоинт
|
||
|
||
### В консольном выводе
|
||
- `S` = старт
|
||
- `1-9` = чекпоинты (номера)
|
||
- `●` = чекпоинты ≥10
|
||
- `#` = камни (можно проезжать)
|
||
- `~` = снег (ускорение ±1)
|
||
- `=` = лёд (инерция)
|
||
- `.` = путь решения
|
||
- ` ` = обычная дорога
|
||
|
||
---
|
||
|
||
## 🔧 Создание собственной тестовой карты
|
||
|
||
Пример минимальной карты:
|
||
```json
|
||
{
|
||
"map": [
|
||
[0, 0, 0, 0, 0],
|
||
[0, 1, 1, 1, 0],
|
||
[0, 0, 4, 0, 0],
|
||
[0, 2, 2, 2, 0],
|
||
[0, 0, 0, 0, 0]
|
||
]
|
||
}
|
||
```
|
||
|
||
**Рекомендации**:
|
||
1. Первая ячейка типа `0` (дорога) становится стартом
|
||
2. Чекпоинты обозначайте типом `4`
|
||
3. Карта читается сверху вниз (первая строка JSON = верх карты)
|
||
4. Y-координаты инвертируются автоматически
|
||
|
||
---
|
||
|
||
## 📖 Дополнительные ресурсы
|
||
|
||
- `/TESTING-SUMMARY.md` - Полная сводка тестирования
|
||
- `/TEST-RESULTS.md` - Детальные результаты каждого теста
|
||
- `/ASTAR-README.md` - Документация алгоритма A*
|
||
- `/MAP-FORMAT.md` - Формат карт
|
||
|
||
---
|
||
|
||
## ✅ Статус
|
||
|
||
Все тестовые карты проверены и работают корректно.
|
||
Последнее тестирование: **19 октября 2025**
|
||
|
||
**100% тестов пройдено успешно!** 🎉
|
||
|