Klasa CheckersGUI - JasinskiKacper/Warcaby_NPG_2025 GitHub Wiki
Główna klasa zarządzająca logiką gry oraz interfejsem graficznym.
Atrybuty:
-root (tk.Tk): główne okno aplikacji.
-canvas (tk.Canvas): obszar do rysowania planszy i pionków.
-board (list[list[Piece or None]]): 8x8 lista reprezentująca planszę. Każde pole może zawierać Piece lub None.
-turn (str): kolor aktualnego gracza ('w' lub 'b').
-selected (tuple[int, int] or None): współrzędne aktualnie wybranego pionka.
-valid_moves (dict): słownik mapujący pozycję pionka do listy dostępnych ruchów.
-must_continue_capture (bool): flaga informująca, czy gracz musi kontynuować bicie tym samym pionkiem.
-capture_origin (tuple[int, int] or None): pozycja pionka, który musi kontynuować bicie.
Metody:
-init(self, root): inicjalizuje GUI, planszę, ustawia zdarzenia kliknięć i rysuje planszę.
-init_board(self): ustawia początkową pozycję pionków na planszy (czarne u góry, białe na dole).
-draw_board(self): rysuje planszę, pionki, podświetla wybrany pionek oraz możliwe ruchy.
-click(self, event): obsługuje kliknięcia myszy, pozwala wybierać pionki i wykonywać ruchy.
-in_bounds(self, r, c) -> bool: sprawdza, czy współrzędne (r, c) mieszczą się na planszy.
-make_move(self, fr, fc, tr, tc): wykonuje ruch pionkiem z (fr, fc) do (tr, tc), usuwa zbite pionki, obsługuje promocję do damki oraz wymuszanie dalszego bicia.
-get_all_valid_moves(self) -> dict: zwraca słownik wszystkich możliwych ruchów aktualnego gracza, uwzględniając wymuszone bicie.
-get_moves(self, r, c) -> list[tuple[int, int]]: zwraca listę możliwych ruchów dla pionka na pozycji (r, c) (ruchy niezbijające).
-get_captures(self, r, c) -> list[tuple[int, int]]: zwraca listę możliwych ruchów-bić dla pionka na pozycji (r, c).