Files
socoban/BACKLOG.md
T

20 lines
3.8 KiB
Markdown

# Backlog
- [x] Удалить `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) и полупрозрачная, на шахматном полу может теряться издали; увеличить/сделать контрастнее. Актуально только для незанятых целей — занятую и так видно по цвету ящика