self.track_board_changes()
if self.root is not None:
self.root.after(250, self._tick)
def shutdown(self):
self.running = False
try:
keyboard.unhook_all_hotkeys()
except Exception:
pass
self._close_engine()
if self.root is not None:
try:
self.root.destroy()
except Exception:
pass
def run(self):
self._build_gui()
keyboard.add_hotkey("s", self.on_start_pressed)
keyboard.add_hotkey("c", self.on_color_toggle_pressed)
keyboard.add_hotkey("m", self.cycle_difficulty_mode)
keyboard.add_hotkey("l", self.toggle_auto_move_and_execute)
keyboard.add_hotkey("h", self.mover.toggle_humanly_mode)
keyboard.add_hotkey("+", self.mover.speed_up)
keyboard.add_hotkey("-", self.mover.speed_down)
self.running = True
self._set_status("Готово. Нажми S для первичного анализа.")
self._sync_ui_state()
if self.root is not None:
self.root.after(250, self._tick)
self.root.mainloop()
if __name__ == "__main__":
logic = ChessLogic(engine_path="stockfish.exe", mode="medium")
logic.run