From f12ec057d3e285cf0ab920f8a4e0237aedf7965f Mon Sep 17 00:00:00 2001 From: tactile Date: Fri, 9 Jan 2026 22:04:20 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BA=20=D0=BA=D0=BD=D0=BE?= =?UTF-8?q?=D0=BF=D0=BA=D0=B5=20+=20.vscode=20=D0=B4=D0=BB=D1=8F=20.net?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 26 +++++++ .vscode/tasks.json | 41 ++++++++++ racing-tools/SOLVER-INTEGRATION.md | 119 +++++++++++++++++++++++++++++ 3 files changed, 186 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 racing-tools/SOLVER-INTEGRATION.md diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..83ef676 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/bin/Debug/net8.0/racing-webservice.dll", + "args": [], + "cwd": "${workspaceFolder}", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..df78c5c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/racing-webservice.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/racing-webservice.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/racing-webservice.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/racing-tools/SOLVER-INTEGRATION.md b/racing-tools/SOLVER-INTEGRATION.md new file mode 100644 index 0000000..1476994 --- /dev/null +++ b/racing-tools/SOLVER-INTEGRATION.md @@ -0,0 +1,119 @@ +# Интеграция A* Solver в Визуализатор + +## Что добавлено + +В визуализатор решений (player.html) добавлена кнопка **"🧠 Найти решение"**, которая автоматически решает загруженную карту через микросервис A*. + +## Изменения в файлах + +### player.html +- Добавлена кнопка "🧠 Найти решение" между "Загрузить карту" и "Загрузить решение" +- Добавлен div для отображения статуса решения + +### player.js +- Добавлена функция `solveMap()` - вызывает API `http://localhost:5000/solve` +- Проверка наличия карты, стартовой позиции и чекпоинтов перед отправкой +- Автоматическая загрузка решения и запуск воспроизведения +- Отображение статистики решения (шаги, чекпоинты, время) +- Обработка ошибок сервера + +### styles.css +- Добавлены стили для `.solver-status` - отображение статуса решения + +## Как использовать + +1. **Запустите микросервис:** + ```bash + ./run-webservice.sh + ``` + +2. **Откройте визуализатор:** + ```bash + ./open-player.sh + # или откройте racing-tools/player.html в браузере + ``` + +3. **Загрузите карту:** + - Нажмите "📂 Загрузить карту" + - Выберите JSON файл с картой + - Карта должна содержать старт (тип 5) и чекпоинты (тип 4) + +4. **Найдите решение:** + - Нажмите "🧠 Найти решение" + - Дождитесь ответа от сервера + - Решение автоматически загрузится и начнет воспроизводиться + +## Статус решения + +После нажатия кнопки отображается: + +### Успех ✅ +``` +✅ Решение найдено! +📊 Шагов: 15 +🎯 Чекпоинтов: 3 +⚡ Макс. скорость: 6 +⏱️ Время: 0.52s +``` + +### Ошибка ❌ +- "Решение не найдено" - нет решения в рамках maxIterations +- "Сервер недоступен" - микросервис не запущен +- Другие ошибки с описанием + +## Преимущества + +✅ **Быстрое тестирование** - не нужно вручную создавать решения +✅ **Автоматическая визуализация** - решение сразу воспроизводится +✅ **Статистика** - видно качество и производительность решения +✅ **Обработка ошибок** - понятные сообщения об ошибках + +## Workflow + +``` +Загрузить карту → Найти решение → Автоматическое воспроизведение + ↓ ↓ ↓ + player.html API call to Визуализация траектории + localhost:5000/solve +``` + +## Требования + +- Микросервис должен быть запущен на `http://localhost:5000` +- Карта должна содержать: + - Стартовую позицию (тип 5) + - Минимум 1 чекпоинт (тип 4) + +## Примеры карт для тестирования + +```bash +# Простая карта +maps/simple-test.json + +# Средняя карта +maps/racing-map-15x15.json + +# Сложная карта +maps/racing-map-42x42.json +``` + +## API endpoint + +``` +POST http://localhost:5000/solve +Content-Type: application/json + +{ + "map": [[0,0,4], [5,0,0], [0,0,0]], + "maxIterations": 5000000 +} +``` + +## Совместимость + +✅ Работает со всеми существующими картами +✅ Не ломает загрузку решений из файлов +✅ Совместимо с редактором карт + + +