Глава 19 · Проект: «Змейка»

Рисуем голову

Голова и яблоко — обычные объекты Turtle с разной формой и цветом.

Рисуем голову

Голова змейки — обычный объект turtle.Turtle(), знакомый ещё с главы 6, только с квадратной формой и без рисования линий (перо поднято):

golova.py
golova = turtle.Turtle()
golova.speed(0)
golova.shape("square")
golova.color("white")
golova.penup()
golova.goto(0, 0)

Рисуем первое яблоко

Яблоко — тоже черепашка, только круглая и красная, и появляется в случайном месте поля, выровненном по сетке шага (random.randrange() с шагом RAZMER_SHAGA, чтобы яблоко всегда оказывалось «в клетке»):

yabloko.py
yabloko = turtle.Turtle()
yabloko.speed(0)
yabloko.shape("circle")
yabloko.color("red")
yabloko.penup()

def novoe_yabloko():
    x = random.randrange(-GRANICA, GRANICA + RAZMER_SHAGA, RAZMER_SHAGA)
    y = random.randrange(-GRANICA, GRANICA + RAZMER_SHAGA, RAZMER_SHAGA)
    yabloko.goto(x, y)

novoe_yabloko()
Почему GRANICA + RAZMER_SHAGA, а не просто GRANICA
У randrange() правая граница исключаетсяrandrange(-280, 280, 20) выдаёт значения только до 260 включительно. Змейка при этом спокойно доезжает до 280 (раздел 19.19), так что без + RAZMER_SHAGA крайний ряд клеток справа и сверху был бы для яблока недостижим — поле получилось бы незаметно несимметричным.
Реальное окно: белая квадратная голова змейки в центре, красное круглое яблоко рядом
Реальное окно: голова и яблоко — два независимых объекта Turtle, оба с поднятым пером.
Практика: голова и яблоко
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →