Все игры, о которых мы говорим, имеют одну общую черту: их интерактивные элементы располагаются на клетчатом поле. Давайте начнем с создания этого поля и подумаем, как обрабатывать событие клика, когда пользователь нажимает на одну из клеток.
Библиотека Turtle предоставляет нам удобное решение для работы с графическими приложениями: главное окно использует привычную декартову систему координат, с центром в середине окна, осью x, направленной вправо, и осью y, ориентированной вверх.
Представим, что размеры поля задаются двумя переменными: N — количество клеток по горизонтали и вертикали, а SIZE — размер стороны клетки. Чтобы установить размер окна в соответствии с размерами клетчатого поля, создадим окно (Screen) и зададим ему параметры с помощью метода setup.
Для ускорения процесса рисования сетки, создадим двух черепах: одна будет рисовать горизонтальные линии, а другая — вертикальные. Установим максимальную скорость рисования, скроем самих черепах и приступим к созданию сетки:
from turtle import Turtle, Screen, done # импортировали все необходимое
N, SIZE = 5, 100
def grid():
row, column = Turtle(), Turtle() # создали двух Черепах
for item in row, column: # задаем начальные параметры Черепахам
item.speed(0) # скорость на максимум
item.ht() # скрыть Черепах
item.pu() # не рисовать при перемещении
item.goto(-(N * SIZE // 2), N * SIZE // 2) # начальная точка
column.rt(90) # поворот направо
for _ in range(N):
row.goto(-(N * SIZE // 2), row.ycor() - SIZE) # перемещение для рисования следующей линии
column.goto(column.xcor() + SIZE, N * SIZE // 2)
for item in row, column:
item.pd()
item.fd(N * SIZE) # рисование линии
item.pu()
sc = Screen() # создание экрана
sc.setup(N * SIZE, N * SIZE) # задание параметров
grid() # вызов функции рисования сетки
done() # ожидание закрытия окна Если теперь запустить этот код, то довольно быстро будет нарисовано такое клетчатое поле:

