Files
paper-racing-gpi/maps/TEST-MAPS-README.md
2025-10-20 19:35:38 +05:00

6.3 KiB
Raw Blame History

🗺️ Тестовые карты для 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 ходов
  • Проверки:
    • Проезд через препятствия
    • Ограниченное ускорение на снегу
    • Корректная работа на льду

🚀 Запуск тестов

Компиляция

cd /home/tactile/dev/dotnet/racing
dotnet build racing-astar.csproj

Запуск отдельного теста

# Тест препятствий
./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

Запуск всех тестов

#!/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)
  • = = лёд (инерция)
  • . = путь решения
  • = обычная дорога

🔧 Создание собственной тестовой карты

Пример минимальной карты:

{
  "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% тестов пройдено успешно! 🎉