This commit is contained in:
2025-10-20 19:35:38 +05:00
commit 023ccd03d8
42 changed files with 10007 additions and 0 deletions

224
maps/TEST-MAPS-README.md Normal file
View File

@@ -0,0 +1,224 @@
# 🗺️ Тестовые карты для 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% тестов пройдено успешно!** 🎉