Rozdział 17 · Interfejs gry

Wyróżnianie linii zwycięskiej

Model już wie, które trzy komórki wygrały – render() po prostu je maluje.

Dane liniowe prowadzą do oświetlenia

find_winner(board)
('X', (0, 4, 8))
state.winning_line = (0, 4, 8)
render()
buttons[0], [4], [8] — zielone tło
Model określa, KTÓRE komórki wygrały – render() po prostu je maluje.
podsvetka_linii.py
for index, btn in enumerate(self.buttons):
    is_win_cell = state.winning_line is not None and index in state.winning_line
    btn.config(bg=WIN_BG if is_win_cell else NEUTRAL_BG)
Podkreśl DOKŁADNIE linię — nie byle jakie pasujące symbole
Jeśli na polu jest na przykład cztery „X”, ale zwyciężyły tylko trzy z nich na diagonali — podświetlane jest ŚCISŁO winning_line, nie każda komórka oznaczona jako „X” index in state.winning_line to gwarantuje.
Przekątna 0-4-8 jest podświetlona na zielono, status to Player Won X
Rzeczywiste okno pełnej wersji gry: diagonalny zwycięstwa jest podświetlony, litery pozostają widoczne. Fragment powyżej to tylko kod samego podświetlenia, a nie cała droga do zwycięstwa.
Praktyka: Podkreśl zwycięską linię
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →