- sokoban.html: canvas game, entrance/exit door mechanic (level completes by walking to the exit after all boxes are placed, not an alert popup), solution search UI (modal with timer, cancel, "Решение найдено!" button) - solver.js: A* with binary heap, true-distance heuristic, static deadlock cells, freeze-deadlock detection, tunnel macro-moves, chunked step() API for non-blocking search in the UI - localStorage-backed solution leaderboard per level (fewest moves wins), fed by both solver finds and manual player completions; G replays the best recorded solution - BACKLOG.md: known follow-ups (dead files, room/corral pruning, undo, etc.)
20 lines
3.8 KiB
Markdown
20 lines
3.8 KiB
Markdown
# Backlog
|
|
|
|
- [ ] Удалить `levels.dat` и `dynamic_prompt.txt`, если подтвердится что не нужны (мёртвые файлы, дублируют вшитый дамп / пустой файл)
|
|
- [x] Солвер: заменить BFS+`Array.shift()` на A* (бинарная куча) + баг с устаревшим состоянием ящиков при повторном запуске. Сделано, но по факту весь набор из 60 уровней — не лёгкая прогрессия: минимум 6 ящиков на уровень, до 34 на некоторых. Это тяжёлые многоящичные паковки, для которых даже правильный A* с хорошим deadlock-отсечением не укладывается в разумное время в JS (нужны техники уровня специализированных солверов — macro-moves, corral pruning, паттерн-базы deadlock'ов — отдельная большая задача). Сейчас солвер честно останавливается по таймауту (8с) вместо зависания на 30-80с как раньше — но "решает всё" не гарантирует
|
|
- [x] Добавить кнопку/клавишу отмены поиска — сделано: солвер разбит на `createSolver()`+пошаговый `.step()`, гоняется кусками через `setTimeout`, есть модалка с таймером и кнопкой "Отмена" (+ Esc). 8-секундный хардкап убран — считает сколько угодно, пока не отменишь
|
|
- [ ] Добавить отмену хода (undo, клавиша Z/U)
|
|
- [ ] Добавить выбор уровня (не только N/P по одному)
|
|
- [ ] Сохранять прогресс в localStorage (текущий уровень, счётчик ходов)
|
|
- [x] Заменить `alert('Победа!')` на экран победы — сделано иначе и лучше: механика двери-выхода (см. ниже), per-level alert исчез вовсе. Остался только финальный alert "игра пройдена" на 60-м уровне — можно тоже заменить на экран, но не горит
|
|
- [ ] Touch-управление для мобилок (canvas фиксированного размера, только клавиатура сейчас)
|
|
- [ ] Favicon + README (что за проект, откуда дамп уровней)
|
|
|
|
## Солвер — следующий уровень (если понадобится тянуть тяжёлые 20-34-ящичные уровни)
|
|
- [ ] Разбивка карты на туннели/комнаты (макро-ходы) — режет дерево поиска на порядки сильнее, чем то, что уже сделано (deadlock-клетки + A*). Отдельная большая задача, не вписывается в лёгкую правку
|
|
|
|
## Дизайн блоков
|
|
- [ ] Ящик на цели / не на цели различать не только цветом (бежевый `#d4a373` vs красный `#e94560` — для дальтоника оба буро-коричневые), добавить форму/иконку/паттерн
|
|
- [ ] Маркер пустой цели (`.`) — точка мелкая (radius TILE/5) и полупрозрачная, на шахматном полу может теряться издали; увеличить/сделать контрастнее. Актуально только для незанятых целей — занятую и так видно по цвету ящика
|
|
|