+ кастомный конструктор поля для своего Сапёра
Доделал кастомный конструктор поля для своего Сапёра — vanilla TypeScript + Vite, без фреймворков.
Теперь можно собрать любое поле от 5×5 до 40×40 с живым revealed-превью. Поле «просвечивается» под выбранную раскладку, пока тянешь ползунки, а на сейве проигрывается каскадная анимация переворота клеток обратно в нераскрытое состояние. Мины авто-подбираются под классическую плотность для выбранного размера (Beginner 12.3% → Expert 20.6%) — после этого их можно дотюнить руками.
Что мне нравится в реализации: • Кастомный widget-manager с hit-test'ом через offscreen pick-канвас, закодированный по цветам — в панели есть отладочный тоггл, который его показывает • RAF-цикл с dirty-флагами: после game over загрузка CPU падает до ~0 Гц • Каждый новый раунд начинается с каскадной анимации из «чистого поля» — никаких спойлеров с минами в самом каскаде • ~1000 строк канвас-кода, 39 тестов, 96% покрытия движка
Зачем vanilla TS? Сапёр — отлично замкнутая площадка для рендеринга, стейт-машин и тайминга анимации без подпорки фреймворка. Прокачиваю инстинкты «движок с нуля».
Живая версия — mines.mellonis.ru. Исходники на GitHub.
· 19.05
можно просто видео посмотреть на https://github.com/mellonis/minesweeper
ответить
коммент удалён