Глава 17 · Проект: «Крестики-нолики»

Создаём глобальные переменные

Игре нужна память между ходами — заведём переменные состояния и построим поле из кнопок циклом.

Создаём глобальные переменные

Игре нужно помнить своё состояние между ходами — чей сейчас ход, закончена ли игра, и сами кнопки поля, чтобы менять их текст:

globalnye_peremennye.py
tekuschij_igrok = "X"
polya = []             # список из 9 кнопок поля
igra_okonchena = False

Создаём кнопки

Поле 3×3 — это девять кнопок, расположенных через grid() (глава 16). Создадим их циклом, а не девятью одинаковыми строками кода вручную (глава 10):

sozdaem_knopki.py
pole_frame = tk.Frame(root)
pole_frame.grid(row=1, column=0, columnspan=3)

for indeks in range(9):
    knopka = tk.Button(
        pole_frame,
        text="",
        font=("Arial", 24, "bold"),
        width=3, height=1,
    )
    knopka.grid(row=indeks // 3, column=indeks % 3)
    polya.append(knopka)
indeks // 3 и indeks % 3 — координаты из номера
Числа от 0 до 8 нужно превратить в строку и столбец таблицы 3×3. Целочисленное деление // (глава 5) даёт номер строки (0,0,0,1,1,1,2,2,2), а остаток % — номер столбца (0,1,2,0,1,2,0,1,2).
Практика в Jupyter Notebook
17-03-peremennye-knopki.ipynb · переменные состояния и поле из кнопок
Открыть ноутбук →