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).