Загрузка данных


import os
import sys
import time
# Импортируем функцию из обновленного crop.py
from crop import find_chessboard_strictly_1to1


def render_human_board_to_console(board_matrix):
    """Выводит красивую текстовую доску 8x8 прямо в консоль CMD."""
    # Очищаем экран CMD перед выводом нового кадра
    os.system("cls" if os.name == "nt" else "clear")

    print("=== ТЕКУЩЕЕ СОСТОЯНИЕ ДОСКИ (LIVE) ===")
    print("Нажмите Ctrl+C в окне консоли, чтобы остановить.\n")

    if not board_matrix:
        print("[!] Доска не обнаружена на экране...")
        return

    # Выводим доску с нумерацией строк и столбцов
    print("    A  B  C  D  E  F  G  H")
    print("  +------------------------+")

    for i, row in enumerate(board_matrix):
        row_str = " ".join(["[X]" if cell else "[ ]" for cell in row])
        # 8 - i задает стандартную шахматную нумерацию (8..1)
        print(f"{8 - i} | {row_str} | {8 - i}")

    print("  +------------------------+")
    print("    A  B  C  D  E  F  G  H")


def process_board_logic_loop(delay=0.1):
    """Постоянный цикл опроса crop.py и отрисовки матрицы."""
    print("Запуск системы мониторинга доски...")
    time.sleep(1)

    try:
        while True:
            # 1. Запрашиваем актуальные данные из crop.py (вызывается без аргументов)
            board_matrix, cropped_board = find_chessboard_strictly_1to1()

            # 2. Отрисовываем обновлённую доску в консоль
            render_human_board_to_console(board_matrix)

            # 3. Задел на будущее: передача кадра в analysis.py
            # if cropped_board is not None:
            #     analysis.process(cropped_board)

            # Пауза между обновлениями (в секундах)
            time.sleep(delay)

    except KeyboardInterrupt:
        print("\n\n[OK] Работа программы завершена пользователем.")
        sys.exit(0)


if __name__ == "__main__":
    # Запускаем постоянный цикл
    process_board_logic_loop(delay=0.1)