Глава 6 · Рисуем классные вещи с помощью Turtle

Заливка, круг, дуга и точка

От пустого контура — к закрашенным фигурам, готовым окружностям, дугам и точкам.

Заливка фигур

Контур — это ещё не всё: часто фигуру хочется закрасить внутри. Для этого черепашке нужно «запомнить», где начинается контур, и «отпустить», когда контур замкнётся.

kontur_treugolnika.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=360)
artist = turtle.Turtle()
artist.pensize(3)
artist.pencolor("#5B24F9")

artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)

screen.exitonclick()
Результат выполнения
Равносторонний треугольник, нарисованный только контуром, без заливки внутри
Треугольник без заливки — только контурная линия
zalityj_treugolnik.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=360)
artist = turtle.Turtle()
artist.pensize(3)
artist.pencolor("#5B24F9")
artist.fillcolor("#B9A0FC")

artist.begin_fill()
artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)
artist.end_fill()

screen.exitonclick()
Результат выполнения
Тот же равносторонний треугольник, но с закрашенной светло-фиолетовой заливкой внутри контура
Тот же треугольник, но begin_fill()/end_fill() закрасили область внутри контура
zalivka_kod.py
artist.pencolor("#5B24F9")
artist.fillcolor("#B9A0FC")

artist.begin_fill()
artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)
artist.forward(140)
artist.left(120)
artist.end_fill()
Как это работает
begin_fill() запоминает точку старта. Затем обычные команды рисования (forward(), left() и другие) вычерчивают замкнутый контур, как обычно. end_fill() закрашивает область внутри этого контура цветом fillcolor().

circle() — готовая команда для окружностей

Рисовать круг вручную (много маленьких прямых под небольшим углом) не нужно — есть готовая команда:

krug.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=380)
artist = turtle.Turtle()
artist.pensize(3)
artist.pencolor("#5B24F9")

artist.circle(80)

screen.exitonclick()
Результат выполнения
Правильная окружность, нарисованная сплошной фиолетовой линией
circle(80) — полная окружность радиусом 80 пикселей
krug_kod.py
artist.circle(80)   # радиус в пикселях

Дуга — часть окружности

Второй, необязательный аргумент circle() — это extent, сколько градусов окружности рисовать:

duga.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=300)
artist = turtle.Turtle()
artist.pensize(3)
artist.pencolor("#5B24F9")

artist.circle(80, 90)

screen.exitonclick()
Результат выполнения
Дуга — четверть окружности, нарисованная сплошной фиолетовой линией
circle(80, 90) — та же окружность, но только четверть (90° из 360°)
duga_kod.py
artist.circle(80, 90)   # радиус 80, но только 90° из 360°

dot() — точка без движения

В отличие от всех предыдущих команд, dot() не двигает черепашку ни на пиксель — она просто ставит закрашенный кружок в текущей позиции:

tochki.py
import turtle

screen = turtle.Screen()
screen.setup(width=380, height=260)
artist = turtle.Turtle()
artist.hideturtle()
artist.penup()

artist.goto(-100, 0); artist.dot(20, "#5B24F9")
artist.goto(0, 0); artist.dot(30, "#DB2777")
artist.goto(100, 0); artist.dot(40, "#059669")

screen.exitonclick()
Результат выполнения
Три цветных точки разного размера в ряд
dot() рисует точку заданного диаметра и цвета — без всякого движения черепашки
tochki_kod.py
artist.dot(20, "#5B24F9")
artist.forward(100)
artist.dot(30, "#DB2777")
Практика: заливка, круг, дуга и точка
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →