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

goto() и координатная панель

Тот же квадрат, что и раньше, — но на этот раз через прямое указание координат каждого угла.

Вернёмся к квадрату из раздела про мини-проекты — на этот раз нарисуем его без единого поворота, задавая напрямую четыре угловые точки командой goto().

Абсолютное перемещение: goto(x, y)

kvadrat_goto.py
import turtle

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

artist.goto(100, 0)
artist.goto(100, 100)
artist.goto(0, 100)
artist.goto(0, 0)

screen.exitonclick()
Результат выполнения
Правильный квадрат, нарисованный через goto() — визуально идентичен квадрату из предыдущего раздела
Тот же квадрат — на этот раз каждая вершина задана координатой напрямую, без единого поворота
kvadrat_goto_kod.py
artist.goto(100, 0)
artist.goto(100, 100)
artist.goto(0, 100)
artist.goto(0, 0)
Два способа — один результат
forward() + right() описывают движение относительно черепашки («проехать, повернуть»); goto() описывает движение относительно экрана («окажись в этой точке»). goto() удобен, когда координаты фигуры уже известны заранее.

Навигационная панель черепашки

Кроме goto(), у черепашки есть ещё несколько команд для работы с координатами напрямую:

КомандаЧто делает
position() (или pos())вернуть текущие координаты (x, y)
xcor()вернуть только координату x
ycor()вернуть только координату y
setx(x)переместиться, изменив только x
sety(y)переместиться, изменив только y
home()вернуться в (0, 0) с курсом 0°
navigacionnaya_panel.py
import turtle

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

artist.penup()
artist.dot(8, "#B9A0FC")
artist.write("  старт (0, 0)", font=("Arial", 11, "normal"))
artist.setx(150)
artist.sety(80)
artist.dot(8, "#5B24F9")
artist.write("  после setx(150), sety(80)", font=("Arial", 11, "normal"))

screen.exitonclick()
Результат выполнения
Две точки на экране: одна в центре подписана «старт (0, 0)», вторая правее и выше подписана координатами после setx/sety
Точка старта (0, 0) и точка после setx(150), sety(80) — обе отмечены и подписаны
navigaciya_kod.py
print(artist.position())   # текущие координаты

artist.setx(150)
artist.sety(80)
print(artist.position())   # координаты изменились по одной оси за раз
Практика: рисуем фигуры через координаты
Модуль turtle открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →