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)