118 lines
5.3 KiB
HTML
118 lines
5.3 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Визуализатор решений - Гонки на бумаге</title>
|
||
<link rel="stylesheet" href="styles.css">
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<h1>🎬 Визуализатор решений</h1>
|
||
<p class="subtitle">Гонки на бумаге / Paper Racing</p>
|
||
|
||
<div class="nav-links">
|
||
<a href="editor.html">🏁 Редактор карт</a>
|
||
<a href="player.html">🎬 Визуализатор решений</a>
|
||
</div>
|
||
|
||
<div class="controls">
|
||
<div class="control-group">
|
||
<h3>📂 Загрузка файлов</h3>
|
||
<div class="buttons">
|
||
<button class="btn-primary" id="loadMapBtn" onclick="document.getElementById('mapInput').click()">📂 Загрузить карту</button>
|
||
<button class="btn-success" id="loadSolutionBtn" onclick="document.getElementById('solutionInput').click()">🎬 Загрузить решение</button>
|
||
</div>
|
||
<input type="file" id="mapInput" accept=".json" onchange="loadMap(event)">
|
||
<input type="file" id="solutionInput" accept=".json" onchange="loadSolution(event)">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="canvas-wrapper">
|
||
<canvas id="mapCanvas"></canvas>
|
||
</div>
|
||
|
||
<div id="playbackControls" class="visualization-panel hidden">
|
||
<h3>🎮 Управление воспроизведением</h3>
|
||
|
||
<div class="playback-controls">
|
||
<button class="playback-btn" onclick="playVisualization()" id="playBtn">▶ Play</button>
|
||
<button class="playback-btn" onclick="pauseVisualization()" id="pauseBtn" disabled>⏸ Pause</button>
|
||
<button class="playback-btn" onclick="resetVisualization()">⏮ Reset</button>
|
||
<button class="playback-btn" onclick="stepBackward()">⏪ Back</button>
|
||
<button class="playback-btn" onclick="stepForward()">⏩ Forward</button>
|
||
|
||
<div class="speed-control">
|
||
<label for="speedSlider">Скорость:</label>
|
||
<input type="range" id="speedSlider" min="1" max="10" value="5" onchange="updateSpeed()">
|
||
<span id="speedValue">5x</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="stepInfo" class="step-info hidden">
|
||
<div class="info-item">
|
||
<span class="info-label">Шаг</span>
|
||
<span class="info-value" id="stepNumber">0 / 0</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">Позиция (x, y)</span>
|
||
<span class="info-value" id="positionValue">(0, 0)</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">Скорость (vx, vy)</span>
|
||
<span class="info-value" id="velocityValue">(0, 0)</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">Ускорение (ax, ay)</span>
|
||
<span class="info-value" id="accelerationValue">(0, 0)</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="info">
|
||
<strong>💡 Инструкция:</strong>
|
||
• Сначала загрузите карту с точкой старта (тип 5)<br>
|
||
• Затем загрузите файл решения с векторами ускорений<br>
|
||
• Используйте кнопки управления для просмотра анимации<br>
|
||
• 🔵 Синяя линия - пройденная траектория<br>
|
||
• 🔴 Красный круг - текущая позиция<br>
|
||
• ➡️ Красная стрелка - направление и скорость движения
|
||
</div>
|
||
|
||
<div class="control-group">
|
||
<h3>📖 Легенда цветов</h3>
|
||
<div class="legend">
|
||
<div class="legend-item">
|
||
<div class="legend-color road"></div>
|
||
<span>Дорога (0)</span>
|
||
</div>
|
||
<div class="legend-item">
|
||
<div class="legend-color stone"></div>
|
||
<span>Камень (1)</span>
|
||
</div>
|
||
<div class="legend-item">
|
||
<div class="legend-color snow"></div>
|
||
<span>Снег (2)</span>
|
||
</div>
|
||
<div class="legend-item">
|
||
<div class="legend-color ice"></div>
|
||
<span>Лёд (3)</span>
|
||
</div>
|
||
<div class="legend-item">
|
||
<div class="legend-color checkpoint"></div>
|
||
<span>Чекпоинт (4)</span>
|
||
</div>
|
||
<div class="legend-item">
|
||
<div class="legend-color start"></div>
|
||
<span>Старт (5)</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="common.js"></script>
|
||
<script src="player.js"></script>
|
||
</body>
|
||
</html>
|
||
|