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