Шахматы v.0.0.3 AlphaCMS
Основной файл: Шахматы для AlphaCMS 1.9.8

Описание:
# Модуль "Шахматы" – реализованные возможности
## Функционал доски и интерфейса
- Инициализация одной или нескольких шахматных досок с автообнаружением (MutationObserver + ручной reinit).
- Сохранение ручного поворота доски (manualFlip) в localStorage (`chess.flip.<gameId>`), XOR с цветом игрока.
- Кнопка «Вернуть доску» + горячая клавиша R (вынесена в отдельный `hotkeys.js`).
- Делегированный обработчик панели инструментов (data-action) вместо отдельных слушателей каждой кнопки.
– Кнопка «Обновить» (refresh) вызывает мгновенный poll/обновление фрагментов.
- панель ходов с переключением видимости; состояние запоминается в localStorage(`chess.moves.visible`).
- Режим просмотра истории (viewer): кнопки first/prev/next/last, клавиши Home/End/ArrowLeft/ArrowRight.
- возвращение в «живой» режим (play) с возобновлением актуальной позиции.
- Восстановление списка ходов после частичного обновления DOM.
- Поддержка нескольких макетов (layout) и тем оформления с fallback для CSS переменных.
- локализованные строки через data-* атрибуты (подписи, сообщения, результаты).
## Ходы и логика игры
- генерация легальных ходов (включая рокировку, en passant, продвижение) с проверкой шахма после симуляции.
- оптимистическое применение хода (визуальный move + обновление часов до ответа сервера).
- Полная обработка продвижения пешки: оверлей с иконками (Q/R/B/N) с учетом цвета.
- Drag&Drop перемещение фигур с подсветкой целей.
- Подсветка: выбранной клетки, возможных ходов, последнего хода, клетки короля под шахматом/матом.
- очистка устаревших подсветок при новых событиях/перерендерах.
- динамические бейджи (result/check/mate) на доске и клетках.
- Клиентская валидация причин невозможности выбрать фигуру (не ваш ход, не ваша фигура, игра завершена и т.п.) с показом подсказок.
## Коммуникация с сервером и обновление
- единственный механизм poll с инкрементальными токенами (`since`, `fenhash`, тайминги, статусы).
- адаптивное ускорение опроса (rapidSync) после посадки или смены сидений.
- Watchdog для возобновления опроса при застое (отсутствие ответа, скрытая вкладка).
- частичное обновление DOM (fragment reload) без полной перезагрузки страницы (патчинг фигур, обновление метаданных, таймеров, списка ходов, имен, рейтингов).
- Сохранение и корректное восстановление состояния выбора/подсвеченных ходов после перезагрузки фрагментов.
## Таймеры и контроль времени
- локально реконструированные серверные секунды (serverNow+delta) для точных часов.
- поддержка инкремента (incr) при применении хода.
- Активные/пассивные подсвеченные часы в зависимости от очереди хода.
- Автоматический старт/запуск часов при появлении обоих игроков и arrival anchor.
## Состояние и кэширование
- Сохранение пользовательских настроек (поворот доски, видимость панели ходов) в localStorage.
- Автоопределение цвета игрока и синхронизация при смене сидений с обновлением ориентации.
- клиентское вычисление списка восторженных фигур и обновление панелей игроков.
## Действия игроков и завершение партии
- предложение ничьей с тремя состояниями (еще не предложенное / предложенное мной / полученное от соперника) и подтверждением.
- принятие/отклонение предложения ничьей с соответствующими сообщениями.
- сдача (resign) с подтверждением и обновлением статуса.
- Досрочное прерывание (abort) – доступно к первому ходу (проверка canAbort).
- Отображение результата (1-0, 0-1, 1/2, время, отмена и т.д.) бейджем на доске и блокирование взаимодействия.
## UX / Сообщение
- централизованный overlay для подсказок, подтверждений, продвижения, сообщений о ничьи/результате.
- Автоматическое сокрытие дублированных индикаторов (очистка перед новым показом).
- Минимальное время показа подсказок (anti-flicker) с возможностью продления.
## Горячие клавиши
- R – поворот доски (у `hotkeys.js`, используя кнопку rotate для единства логики).
- D – debug overlay с текущими параметрами таймеров/состояния.
- ArrowLeft/ArrowRight – навигация по истории ходов.
- Home/End – скачок на начало/последний ход.
- Escape – возврат в live режим.
## Надежность и оптимизации
- удаленно дублированные слушатели кнопок (устранение двойных срабатываний, особенно rotate).
- Аккуратный patch элементов доски (минимальные DOM изменения) для лучшей производительности.
- защита от некорректных данных (проверки числовых полей, дефолты).
- Безопасная обработка исключений в большинстве утилит (try/catch) – UI не ломается при частичных сбоях.
## Отладка и расширяемость
- Debug горячая клавиша (D) для быстрого анализа состояния.
- Публичный `window.chessReinit()` и событие `chess:reinit` для внешней реинициализации (например, после AJAX навигации).
- Легкое добавление новых горячих клавиш в `hotkeys.js` без изменения основного контроллера.
---
Этот список отображает текущее состояние реализованного функционала клиентского модуля шахмат.
Реальное имя: chess.zip
Загружен: 14.08.2025 в 07:46
Последнее обновление: 14 авг 2025, в 9:08
Размер: 66.3 Kb
Выложил:
iTeffa
Проверил:
Denis Legran

Описание:
# Модуль "Шахматы" – реализованные возможности
## Функционал доски и интерфейса
- Инициализация одной или нескольких шахматных досок с автообнаружением (MutationObserver + ручной reinit).
- Сохранение ручного поворота доски (manualFlip) в localStorage (`chess.flip.<gameId>`), XOR с цветом игрока.
- Кнопка «Вернуть доску» + горячая клавиша R (вынесена в отдельный `hotkeys.js`).
- Делегированный обработчик панели инструментов (data-action) вместо отдельных слушателей каждой кнопки.
– Кнопка «Обновить» (refresh) вызывает мгновенный poll/обновление фрагментов.
- панель ходов с переключением видимости; состояние запоминается в localStorage(`chess.moves.visible`).
- Режим просмотра истории (viewer): кнопки first/prev/next/last, клавиши Home/End/ArrowLeft/ArrowRight.
- возвращение в «живой» режим (play) с возобновлением актуальной позиции.
- Восстановление списка ходов после частичного обновления DOM.
- Поддержка нескольких макетов (layout) и тем оформления с fallback для CSS переменных.
- локализованные строки через data-* атрибуты (подписи, сообщения, результаты).
## Ходы и логика игры
- генерация легальных ходов (включая рокировку, en passant, продвижение) с проверкой шахма после симуляции.
- оптимистическое применение хода (визуальный move + обновление часов до ответа сервера).
- Полная обработка продвижения пешки: оверлей с иконками (Q/R/B/N) с учетом цвета.
- Drag&Drop перемещение фигур с подсветкой целей.
- Подсветка: выбранной клетки, возможных ходов, последнего хода, клетки короля под шахматом/матом.
- очистка устаревших подсветок при новых событиях/перерендерах.
- динамические бейджи (result/check/mate) на доске и клетках.
- Клиентская валидация причин невозможности выбрать фигуру (не ваш ход, не ваша фигура, игра завершена и т.п.) с показом подсказок.
## Коммуникация с сервером и обновление
- единственный механизм poll с инкрементальными токенами (`since`, `fenhash`, тайминги, статусы).
- адаптивное ускорение опроса (rapidSync) после посадки или смены сидений.
- Watchdog для возобновления опроса при застое (отсутствие ответа, скрытая вкладка).
- частичное обновление DOM (fragment reload) без полной перезагрузки страницы (патчинг фигур, обновление метаданных, таймеров, списка ходов, имен, рейтингов).
- Сохранение и корректное восстановление состояния выбора/подсвеченных ходов после перезагрузки фрагментов.
## Таймеры и контроль времени
- локально реконструированные серверные секунды (serverNow+delta) для точных часов.
- поддержка инкремента (incr) при применении хода.
- Активные/пассивные подсвеченные часы в зависимости от очереди хода.
- Автоматический старт/запуск часов при появлении обоих игроков и arrival anchor.
## Состояние и кэширование
- Сохранение пользовательских настроек (поворот доски, видимость панели ходов) в localStorage.
- Автоопределение цвета игрока и синхронизация при смене сидений с обновлением ориентации.
- клиентское вычисление списка восторженных фигур и обновление панелей игроков.
## Действия игроков и завершение партии
- предложение ничьей с тремя состояниями (еще не предложенное / предложенное мной / полученное от соперника) и подтверждением.
- принятие/отклонение предложения ничьей с соответствующими сообщениями.
- сдача (resign) с подтверждением и обновлением статуса.
- Досрочное прерывание (abort) – доступно к первому ходу (проверка canAbort).
- Отображение результата (1-0, 0-1, 1/2, время, отмена и т.д.) бейджем на доске и блокирование взаимодействия.
## UX / Сообщение
- централизованный overlay для подсказок, подтверждений, продвижения, сообщений о ничьи/результате.
- Автоматическое сокрытие дублированных индикаторов (очистка перед новым показом).
- Минимальное время показа подсказок (anti-flicker) с возможностью продления.
## Горячие клавиши
- R – поворот доски (у `hotkeys.js`, используя кнопку rotate для единства логики).
- D – debug overlay с текущими параметрами таймеров/состояния.
- ArrowLeft/ArrowRight – навигация по истории ходов.
- Home/End – скачок на начало/последний ход.
- Escape – возврат в live режим.
## Надежность и оптимизации
- удаленно дублированные слушатели кнопок (устранение двойных срабатываний, особенно rotate).
- Аккуратный patch элементов доски (минимальные DOM изменения) для лучшей производительности.
- защита от некорректных данных (проверки числовых полей, дефолты).
- Безопасная обработка исключений в большинстве утилит (try/catch) – UI не ломается при частичных сбоях.
## Отладка и расширяемость
- Debug горячая клавиша (D) для быстрого анализа состояния.
- Публичный `window.chessReinit()` и событие `chess:reinit` для внешней реинициализации (например, после AJAX навигации).
- Легкое добавление новых горячих клавиш в `hotkeys.js` без изменения основного контроллера.
---
Этот список отображает текущее состояние реализованного функционала клиентского модуля шахмат.
Реальное имя: chess.zip
Загружен: 14.08.2025 в 07:46
Последнее обновление: 14 авг 2025, в 9:08
Размер: 66.3 Kb
Выложил:

Проверил:

Адм

Авторизируйтесь для просмотра комментариев