# `turtle` — Графіка черепахи

Вихідний код: Lib/turtle.py

## Вступ

Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon in 1967.

Уявіть собі роботизовану черепаху, що починається в (0, 0) у площині x-y. Після `імпорту черепахи` дайте їй команду `turtle.forward(15)`, і вона переміститься (на екрані!) на 15 пікселів у напрямку, куди дивиться, малюючи лінію під час руху. Дайте йому команду `turtle.right(25)`, і він повернеться на місці на 25 градусів за годинниковою стрілкою.

By combining together these and similar commands, intricate shapes and pictures can easily be drawn.

The `turtle` module is an extended reimplementation of the same-named module from the Python standard distribution up to version Python 2.5.

It tries to keep the merits of the old turtle module and to be (nearly) 100% compatible with it. This means in the first place to enable the learning programmer to use all the commands, classes and methods interactively when using the module from within IDLE run with the `-n` switch.

The turtle module provides turtle graphics primitives, in both object-oriented and procedure-oriented ways. Because it uses `tkinter` for the underlying graphics, it needs a version of Python installed with Tk support.

The object-oriented interface uses essentially two+two classes:

1. The `TurtleScreen` class defines graphics windows as a playground for the drawing turtles. Its constructor needs a `tkinter.Canvas` or a `ScrolledCanvas` as argument. It should be used when `turtle` is used as part of some application.

   The function `Screen()` returns a singleton object of a `TurtleScreen` subclass. This function should be used when `turtle` is used as a standalone tool for doing graphics. As a singleton object, inheriting from its class is not possible.

   All methods of TurtleScreen/Screen also exist as functions, i.e. as part of the procedure-oriented interface.

2. `RawTurtle` (alias: `RawPen`) defines Turtle objects which draw on a `TurtleScreen`. Its constructor needs a Canvas, ScrolledCanvas or TurtleScreen as argument, so the RawTurtle objects know where to draw.

   Derived from RawTurtle is the subclass `Turtle` (alias: `Pen`), which draws on «the» `Screen` instance which is automatically created, if not already present.

   All methods of RawTurtle/Turtle also exist as functions, i.e. part of the procedure-oriented interface.

The procedural interface provides functions which are derived from the methods of the classes `Screen` and `Turtle`. They have the same names as the corresponding methods. A screen object is automatically created whenever a function derived from a Screen method is called. An (unnamed) turtle object is automatically created whenever any of the functions derived from a Turtle method is called.

To use multiple turtles on a screen one has to use the object-oriented interface.

Примітка

У наступній документації подано список аргументів для функцій. Методи, звичайно, мають додатковий перший аргумент self, який тут опущено.

## Overview of available Turtle and Screen methods

### Методи черепахи

Рух черепахи
  Рухайтесь і малюйте
    `forward()` | `fd()`
    `backward()` | `bk()` | `back()`
    `right()` | `rt()`
    `left()` | `lt()`
    `goto()` | `setpos()` | `setposition()`
    `setx()`
    `sety()`
    `setheading()` | `seth()`
    `home()`
    `circle()`
    `dot()`
    `stamp()`
    `clearstamp()`
    `clearstamps()`
    `undo()`
    `speed()`
  Розкажіть про стан Черепахи
    `position()` | `pos()`
    `towards()`
    `xcor()`
    `ycor()`
    `heading()`
    `distance()`
  Налаштування та вимірювання
    `degrees()`
    `radians()`
Керування пером
  Стан малюнка
    `pendown()` | `pd()` | `down()`
    `penup()` | `pu()` | `up()`
    `pensize()` | `width()`
    `pen()`
    `isdown()`
  Контроль кольору
    `color()`
    `pencolor()`
    `fillcolor()`
  Наповнення
    `filling()`
    `begin_fill()`
    `end_fill()`
  Більше контролю малювання
    `reset()`
    `clear()`
    `write()`
Держава черепахи
  Видимість
    `showturtle()` | `st()`
    `hideturtle()` | `ht()`
    `isvisible()`
  Зовнішній вигляд
    `shape()`
    `resizemode()`
    `shapesize()` | `turtlesize()`
    `shearfactor()`
    `settiltangle()`
    `tiltangle()`
    `tilt()`
    `shapetransform()`
    `get_shapepoly()`
Використання подій
  `onclick()`
  `onrelease()`
  `ondrag()`
Спеціальні методи Черепахи
  `begin_poly()`
  `end_poly()`
  `get_poly()`
  `clone()`
  `getturtle()` | `getpen()`
  `getscreen()`
  `setundobuffer()`
  `undobufferentries()`

### Методи TurtleScreen/Screen

Віконний контроль
  `bgcolor()`
  `bgpic()`
  `clearscreen()`
  `resetscreen()`
  `screensize()`
  `setworldcoordinates()`
Керування анімацією
  `delay()`
  `tracer()`
  `update()`
Використання екранних подій
  `listen()`
  `onkey()` | `onkeyrelease()`
  `onkeypress()`
  `onclick()` | `onscreenclick()`
  `ontimer()`
  `mainloop()` | `done()`
Налаштування та спеціальні методи
  `mode()`
  `colormode()`
  `getcanvas()`
  `getshapes()`
  `register_shape()` | `addshape()`
  `turtles()`
  `висота_вікна()`
  `ширина_вікна()`
Методи введення
  `textinput()`
  `numinput()`
Методи, специфічні для Screen
  `bye()`
  `exitonclick()`
  `setup()`
  `title()`

## Методи RawTurtle/Turtle та відповідні функції

Більшість прикладів у цьому розділі стосуються екземпляра Turtle під назвою `turtle`.

### Рух черепахи

`turtle.``forward`(distance)
`turtle.``fd`(distance)
  Параметри

    distance – число (ціле чи з плаваючою точкою)

  Перемістіть черепаху вперед на вказану відстань, у напрямку, куди прямує черепаха.

      >>> turtle.position()
      (0.00,0.00)
      >>> turtle.forward(25)
      >>> turtle.position()
      (25.00,0.00)
      >>> turtle.forward(-75)
      >>> turtle.position()
      (-50.00,0.00)

`turtle.``back`(distance)
`turtle.``bk`(distance)
`turtle.``backward`(distance)
  Параметри

    distance – число

  Перемістіть черепаху назад на відстань, протилежну напрямку руху черепахи. Не змінюйте напрямок черепахи.

      >>> turtle.position()
      (0.00,0.00)
      >>> turtle.backward(30)
      >>> turtle.position()
      (-30.00,0.00)

`turtle.``right`(angle)
`turtle.``rt`(angle)
  Параметри

    angle – число (ціле чи з плаваючою точкою)

  Поверніть черепаху праворуч на одиниці кут. (За замовчуванням одиницями є градуси, але їх можна встановити за допомогою функцій `degrees()` і `radians()`.) Кутова орієнтація залежить від режиму черепахи, див. `mode()`.

      >>> turtle.heading()
      22.0
      >>> turtle.right(45)
      >>> turtle.heading()
      337.0

`turtle.``left`(angle)
`turtle.``lt`(angle)
  Параметри

    angle – число (ціле чи з плаваючою точкою)

  Поверніть черепаху ліворуч на кут. (За замовчуванням одиницями є градуси, але їх можна встановити за допомогою функцій `degrees()` і `radians()`.) Кутова орієнтація залежить від режиму черепахи, див. `mode()`.

      >>> turtle.heading()
      22.0
      >>> turtle.left(45)
      >>> turtle.heading()
      67.0

`turtle.``goto`(x, y=None)
`turtle.``setpos`(x, y=None)
`turtle.``setposition`(x, y=None)
  Параметри

    - x – число або пара/вектор чисел

    - y – число або `Жодного`

  Якщо y має значення `None`, x має бути парою координат або `Vec2D` (наприклад, як повернуто `pos()`).

  Перемістіть черепаху в абсолютне положення. Якщо ручка опущена, намалюйте лінію. Не змінюйте орієнтацію черепахи.

       >>> tp = turtle.pos()
       >>> tp
       (0.00,0.00)
       >>> turtle.setpos(60,30)
       >>> turtle.pos()
       (60.00,30.00)
       >>> turtle.setpos((20,80))
       >>> turtle.pos()
       (20.00,80.00)
       >>> turtle.setpos(tp)
       >>> turtle.pos()
       (0.00,0.00)

`turtle.``setx`(x)
  Параметри

    x – число (ціле чи з плаваючою точкою)

  Встановіть першу координату черепахи на x, другу залиште без змін.

      >>> turtle.position()
      (0.00,240.00)
      >>> turtle.setx(10)
      >>> turtle.position()
      (10.00,240.00)

`turtle.``sety`(y)
  Параметри

    y – число (ціле чи з плаваючою точкою)

  Встановіть другу координату черепахи на y, залиште першу координату без змін.

      >>> turtle.position()
      (0.00,40.00)
      >>> turtle.sety(-10)
      >>> turtle.position()
      (0.00,-10.00)

`turtle.``setheading`(to_angle)
`turtle.``seth`(to_angle)
  Параметри

    to_angle – число (ціле чи з плаваючою точкою)

  Встановіть орієнтацію черепахи на to_angle. Ось кілька поширених напрямків у градусах:

  стандартний режим | режим логотипу
  --- | ---
  0 - схід | 0 - північ
  90 - півн | 90 - сх
  180 - зах | 180 - півд
  270 - півд | 270 - зах

      >>> turtle.setheading(90)
      >>> turtle.heading()
      90.0

`turtle.``home`()

  Перемістіть черепаху в початкову точку – координати (0,0) – і встановіть її напрям на початкову орієнтацію (яка залежить від режиму, див. `mode()`).

      >>> turtle.heading()
      90.0
      >>> turtle.position()
      (0.00,-10.00)
      >>> turtle.home()
      >>> turtle.position()
      (0.00,0.00)
      >>> turtle.heading()
      0.0

`turtle.``circle`(radius, extent=None, steps=None)
  Параметри

    - radius – число

    - extent – число (або `Жодного`)

    - steps – ціле число (або `Жодного`)

  Накресліть коло із заданим радіусом. Центр — радіус одиниць ліворуч від черепахи; протяжність – кут – визначає, яка частина кола буде намальована. Якщо протяжність не вказано, намалюйте все коло. Якщо протяжність не є повним колом, одна кінцева точка дуги є поточною позицією пера. Намалюйте дугу проти годинникової стрілки, якщо радіус додатний, інакше – за годинниковою стрілкою. Нарешті, напрямок черепахи змінюється на величину протяжності.

  Оскільки коло апроксимується вписаним правильним багатокутником, кроки визначають кількість кроків для використання. Якщо не вказано, воно буде розраховано автоматично. Можна використовувати для малювання правильних багатокутників.

      >>> turtle.home()
      >>> turtle.position()
      (0.00,0.00)
      >>> turtle.heading()
      0.0
      >>> turtle.circle(50)
      >>> turtle.position()
      (-0.00,0.00)
      >>> turtle.heading()
      0.0
      >>> turtle.circle(120, 180)  # draw a semicircle
      >>> turtle.position()
      (0.00,240.00)
      >>> turtle.heading()
      180.0

`turtle.``dot`(size=None, *color)
  Параметри

    - size – ціле число >= 1 (якщо задано)

    - color – рядок кольорів або числовий кортеж кольорів

  Намалюйте круглу точку діаметром розмір, використовуючи колір. Якщо size не вказано, використовується максимальний розмір pensize+4 і 2*pensize.

      >>> turtle.home()
      >>> turtle.dot()
      >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)
      >>> turtle.position()
      (100.00,-0.00)
      >>> turtle.heading()
      0.0

`turtle.``stamp`()

  Виштампуйте копію фігури черепахи на полотні в поточній позиції черепахи. Повертає stamp_id для цього штампа, який можна використати для його видалення, викликавши `clearstamp(stamp_id)`.

      >>> turtle.color("blue")
      >>> turtle.stamp()
      11
      >>> turtle.fd(50)

`turtle.``clearstamp`(stampid)
  Параметри

    stampid – ціле число, має бути значенням, що повертається попереднім викликом `stamp()`

  Видалити штамп із заданим stampid.

      >>> turtle.position()
      (150.00,-0.00)
      >>> turtle.color("blue")
      >>> astamp = turtle.stamp()
      >>> turtle.fd(50)
      >>> turtle.position()
      (200.00,-0.00)
      >>> turtle.clearstamp(astamp)
      >>> turtle.position()
      (200.00,-0.00)

`turtle.``clearstamps`(n=None)
  Параметри

    n – ціле число (або `Жодного`)

  Видалити всі або перші/останні n штампів черепахи. Якщо n має значення `None`, видаліть усі позначки, якщо n > 0 видаліть перші n позначок, інакше, якщо n < 0, видаліть останні n позначок.

      >>> for i in range(8):
      ...     turtle.stamp(); turtle.fd(30)
      13
      14
      15
      16
      17
      18
      19
      20
      >>> turtle.clearstamps(2)
      >>> turtle.clearstamps(-2)
      >>> turtle.clearstamps()

`turtle.``undo`()

  Скасувати (кілька разів) останні дії черепахи. Кількість доступних дій скасування визначається розміром буфера скасування.

      >>> for i in range(4):
      ...     turtle.fd(50); turtle.lt(80)
      ...
      >>> for i in range(8):
      ...     turtle.undo()

`turtle.``speed`(speed=None)
  Параметри

    speed – ціле число в діапазоні 0..10 або швидкісний рядок (див. нижче)

  Встановіть швидкість черепахи на ціле число в діапазоні 0..10. Якщо аргумент не вказано, повертає поточну швидкість.

  Якщо введення є числом, більшим за 10 або меншим за 0,5, швидкість встановлюється на 0. Рядки швидкості зіставляються зі значеннями швидкості таким чином:

  - «найшвидший»: 0

  - «швидко»: 10

  - «нормальний»: 6

  - «повільно»: 3

  - «найповільніший»: 1

  Швидкості від 1 до 10 забезпечують дедалі швидшу анімацію малювання ліній і обертання черепахи.

  Увага: швидкість = 0 означає, що немає анімації. вперед/назад змушує черепаху стрибати, а ліворуч/праворуч змушує черепаху миттєво повертатися.

      >>> turtle.speed()
      3
      >>> turtle.speed('normal')
      >>> turtle.speed()
      6
      >>> turtle.speed(9)
      >>> turtle.speed()
      9

### Розкажіть про стан Черепахи

`turtle.``position`()
`turtle.``pos`()

  Повертає поточне розташування черепахи (x,y) (як вектор `Vec2D`).

      >>> turtle.pos()
      (440.00,-0.00)

`turtle.``towards`(x, y=None)
  Параметри

    - x – число або пара/вектор чисел або екземпляр черепахи

    - y – число, якщо x є числом, інакше `None`

  Повертає кут між лінією від положення черепахи до положення, визначеного (x,y), вектором або іншою черепахою. Це залежить від початкової орієнтації черепахи, яка залежить від режиму - «стандартний»/»світ» або «логотип».

      >>> turtle.goto(10, 10)
      >>> turtle.towards(0,0)
      225.0

`turtle.``xcor`()

  Поверніть координату x черепахи.

      >>> turtle.home()
      >>> turtle.left(50)
      >>> turtle.forward(100)
      >>> turtle.pos()
      (64.28,76.60)
      >>> print(round(turtle.xcor(), 5))
      64.27876

`turtle.``ycor`()

  Поверніть координату y черепахи.

      >>> turtle.home()
      >>> turtle.left(60)
      >>> turtle.forward(100)
      >>> print(turtle.pos())
      (50.00,86.60)
      >>> print(round(turtle.ycor(), 5))
      86.60254

`turtle.``heading`()

  Повертає поточний заголовок черепахи (значення залежить від режиму черепахи, див. `mode()`).

      >>> turtle.home()
      >>> turtle.left(67)
      >>> turtle.heading()
      67.0

`turtle.``distance`(x, y=None)
  Параметри

    - x – число або пара/вектор чисел або екземпляр черепахи

    - y – число, якщо x є числом, інакше `None`

  Повертає відстань від черепахи до (x,y), даного вектора або даної іншої черепахи в одиницях кроку черепахи.

      >>> turtle.home()
      >>> turtle.distance(30,40)
      50.0
      >>> turtle.distance((30,40))
      50.0
      >>> joe = Turtle()
      >>> joe.forward(77)
      >>> turtle.distance(joe)
      77.0

### Налаштування для вимірювання

`turtle.``degrees`(fullcircle=360.0)
  Параметри

    fullcircle – число

  Встановіть одиниці вимірювання кута, тобто встановіть кількість «градусів» для повного кола. Значення за замовчуванням – 360 градусів.

      >>> turtle.home()
      >>> turtle.left(90)
      >>> turtle.heading()
      90.0

      Change angle measurement unit to grad (also known as gon,
      grade, or gradian and equals 1/100-th of the right angle.)
      >>> turtle.degrees(400.0)
      >>> turtle.heading()
      100.0
      >>> turtle.degrees(360)
      >>> turtle.heading()
      90.0

`turtle.``radians`()

  Установіть одиниці вимірювання кута в радіанах. Еквівалент `градусів(2*math.pi)`.

      >>> turtle.home()
      >>> turtle.left(90)
      >>> turtle.heading()
      90.0
      >>> turtle.radians()
      >>> turtle.heading()
      1.5707963267948966

### Керування пером

#### Стан малюнка

`turtle.``pendown`()
`turtle.``pd`()
`turtle.``down`()

  Потягніть ручку вниз – малюйте під час руху.

`turtle.``penup`()
`turtle.``pu`()
`turtle.``up`()

  Потягніть ручку вгору - під час руху не буде малюнка.

`turtle.``pensize`(width=None)
`turtle.``width`(width=None)
  Параметри

    width – позитивне число

  Встановіть товщину лінії на width або поверніть її. Якщо для параметра resizemode встановлено значення «auto» і turtleshape є багатокутником, цей багатокутник малюється з тією самою товщиною лінії. Якщо аргумент не задано, повертається поточний розмір пенсії.

      >>> turtle.pensize()
      1
      >>> turtle.pensize(10)   # from here on lines of width 10 are drawn

`turtle.``pen`(pen=None, **pendict)
  Параметри

    - pen – словник з деякими або всіма перерахованими нижче ключами

    - pendict – один або більше ключових аргументів із зазначеними нижче ключами як ключовими словами

  Повертайте або встановлюйте атрибути пера в «словнику пера» з такими парами ключ/значення:

  - «показано»: Правда/Невірно

  - «pendown»: Правда/Невірно

  - «pencolor»: кольоровий рядок або колірний кортеж

  - «fillcolor»: кольоровий рядок або колірний кортеж

  - «pensize»: позитивне число

  - «швидкість»: число в діапазоні 0..10

  - «resizemode»: «auto» або «user» або «noresize»

  - «stretchfactor»: (додатне число, додатне число)

  - «контур»: позитивне число

  - «нахил»: число

  Цей словник можна використовувати як аргумент для наступного виклику `pen()` для відновлення попереднього стану пера. Крім того, один або декілька з цих атрибутів можна надати як ключові аргументи. Це можна використовувати для встановлення кількох атрибутів пера в одному операторі.

      >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
      >>> sorted(turtle.pen().items())
      [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
       ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
       ('shearfactor', 0.0), ('shown', True), ('speed', 9),
       ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
      >>> penstate=turtle.pen()
      >>> turtle.color("yellow", "")
      >>> turtle.penup()
      >>> sorted(turtle.pen().items())[:3]
      [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
      >>> turtle.pen(penstate, fillcolor="green")
      >>> sorted(turtle.pen().items())[:3]
      [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]

`turtle.``isdown`()

  Повертає `True`, якщо ручка опущена, `False`, якщо вона піднята.

      >>> turtle.penup()
      >>> turtle.isdown()
      False
      >>> turtle.pendown()
      >>> turtle.isdown()
      True

#### Контроль кольору

`turtle.``pencolor`(*args)

  Повернути або встановити колір пера.

  Дозволено чотири формати введення:

  `pencolor()`

    Повертає поточний колір пера як рядок специфікації кольору або як кортеж (див. приклад). Може використовуватися як вхідні дані для іншого виклику color/pencolor/fillcolor.

  pencolor(кольоровий рядок).

    Встановіть колір пера на colorstring, який є рядком специфікації кольору Tk, наприклад `"red"`, `"yellow"` або `"#33cc8c"`.

  `pencolor ((r, g, b))`

    Встановіть колір пера на колір RGB, представлений кортежем r, g і b. Кожне з r, g і b має бути в діапазоні 0..colormode, де colormode дорівнює 1,0 або 255 (див. `colormode()`).

  `колір пера(r, g, b)`

    Встановіть колір пера на колір RGB, представлений r, g і b. Кожне з r, g і b має бути в діапазоні 0..colormode.

  Якщо turtleshape є багатокутником, контур цього багатокутника малюється щойно встановленим кольором пера.

       >>> colormode()
       1.0
       >>> turtle.pencolor()
       'red'
       >>> turtle.pencolor("brown")
       >>> turtle.pencolor()
       'brown'
       >>> tup = (0.2, 0.8, 0.55)
       >>> turtle.pencolor(tup)
       >>> turtle.pencolor()
       (0.2, 0.8, 0.5490196078431373)
       >>> colormode(255)
       >>> turtle.pencolor()
       (51.0, 204.0, 140.0)
       >>> turtle.pencolor('#32c18f')
       >>> turtle.pencolor()
       (50.0, 193.0, 143.0)

`turtle.``fillcolor`(*args)

  Повернути або встановити колір заливки.

  Дозволено чотири формати введення:

  `fillcolor()`

    Повертає поточний колір заливки як рядок специфікації кольору, можливо, у форматі кортежу (див. приклад). Може використовуватися як вхідні дані для іншого виклику color/pencolor/fillcolor.

  `fillcolor(colorstring)`

    Встановіть колір заливки на colorstring, який є рядком специфікації кольору Tk, наприклад `"red"`, `"yellow"` або `"#33cc8c"`.

  `fillcolor((r, g, b))`

    Встановіть колір заливки на колір RGB, представлений кортежем r, g і b. Кожне з r, g і b має бути в діапазоні 0..colormode, де colormode дорівнює 1,0 або 255 (див. `colormode()`).

  `fillcolor(r, g, b)`

    Встановіть колір заливки на колір RGB, представлений r, g і b. Кожне з r, g і b має бути в діапазоні 0..colormode.

  Якщо turtleshape є багатокутником, внутрішня частина цього багатокутника буде намальована новим кольором заливки.

       >>> turtle.fillcolor("violet")
       >>> turtle.fillcolor()
       'violet'
       >>> turtle.pencolor()
       (50.0, 193.0, 143.0)
       >>> turtle.fillcolor((50, 193, 143))  # Integers, not floats
       >>> turtle.fillcolor()
       (50.0, 193.0, 143.0)
       >>> turtle.fillcolor('#ffffff')
       >>> turtle.fillcolor()
       (255.0, 255.0, 255.0)

`turtle.``color`(*args)

  Повернути або встановити колір пера та колір заливки.

  Допускається кілька форматів введення. Вони використовують від 0 до 3 аргументів наступним чином:

  `колір()`

    Повертає поточний колір пера та поточний колір заливки як пару рядків специфікації кольору або кортежів, які повертає `pencolor()` і `fillcolor()`.

  `color(colorstring)`, `color((r,g,b))`, `color(r,g,b)`

    Вхідні дані, як у `pencolor()`, встановіть для обох, заливки та кольору пера, вказане значення.

  `color(colorstring1, colorstring2)`, `color((r1,g1,b1), (r2,g2,b2))`

    Еквівалент `pencolor(colorstring1)` і `fillcolor(colorstring2)` і аналогічно, якщо використовується інший формат введення.

  Якщо turtleshape є багатокутником, контур і внутрішня частина цього багатокутника малюються новими кольорами.

       >>> turtle.color("red", "green")
       >>> turtle.color()
       ('red', 'green')
       >>> color("#285078", "#a0c8f0")
       >>> color()
       ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))

Дивіться також: Екранний метод `colormode()`.

#### Наповнення

`turtle.``filling`()

  Повернути fillstate (`True`, якщо заповнення, `False` інакше).

       >>> turtle.begin_fill()
       >>> if turtle.filling():
       ...    turtle.pensize(5)
       ... else:
       ...    turtle.pensize(3)

`turtle.``begin_fill`()

  Викликається безпосередньо перед малюванням форми, яку потрібно заповнити.

`turtle.``end_fill`()

  Заповніть форму, намальовану після останнього виклику `begin_fill()`.

  Чи заповнюються області перекриття для багатокутників, що перетинаються між собою, або кількох фігур, залежить від графіки операційної системи, типу перекриття та кількості перекривань. Наприклад, зірка Черепахи вище може бути або повністю жовтою, або мати деякі білі області.

      >>> turtle.color("black", "red")
      >>> turtle.begin_fill()
      >>> turtle.circle(80)
      >>> turtle.end_fill()

#### Більше контролю малювання

`turtle.``reset`()

  Видаліть малюнки черепахи з екрана, знову відцентруйте черепаху та встановіть для змінних значення за замовчуванням.

      >>> turtle.goto(0,-22)
      >>> turtle.left(100)
      >>> turtle.position()
      (0.00,-22.00)
      >>> turtle.heading()
      100.0
      >>> turtle.reset()
      >>> turtle.position()
      (0.00,0.00)
      >>> turtle.heading()
      0.0

`turtle.``clear`()

  Видаліть малюнки черепахи з екрана. Не рухай черепаху. Стан і положення черепахи, а також малюнки інших черепах не впливають.

`turtle.``write`(arg, move=False, align='left', font=('Arial', 8, 'normal'))
  Параметри

    - arg – об’єкт для запису на TurtleScreen

    - move – Правда/Неправда

    - align – один із рядків «зліва», «по центру» або справа»

    - font – трійка (назва шрифту, розмір шрифту, тип шрифту)

  Напишіть текст - рядкове представлення arg - у поточній позиції черепашки відповідно до align («left», «center» або «right») і з указаним шрифтом. Якщо move має значення true, перо переміщується в нижній правий кут тексту. За замовчуванням move має значення `False`.

      >>> turtle.write("Home = ", True, align="center")
      >>> turtle.write((0,0), True)

### Держава черепахи

#### Видимість

`turtle.``hideturtle`()
`turtle.``ht`()

  Зробіть черепаху невидимою. Бажано робити це, поки ви виконуєте якийсь складний малюнок, тому що приховання черепахи значно прискорює малювання.

      >>> turtle.hideturtle()

`turtle.``showturtle`()
`turtle.``st`()

  Зробіть черепаху видимою.

      >>> turtle.showturtle()

`turtle.``isvisible`()

  Повертає `True`, якщо черепаха показана, `False`, якщо вона прихована.

      >>> turtle.hideturtle()
      >>> turtle.isvisible()
      False
      >>> turtle.showturtle()
      >>> turtle.isvisible()
      True

#### Зовнішній вигляд

`turtle.``shape`(name=None)
  Параметри

    name – рядок, який є дійсним іменем форми

  Установити фігуру черепахи у форму з заданим ім’ям або, якщо ім’я не вказано, повернути назву поточної форми. Фігура з ім’ям має існувати в словнику форм TurtleScreen. Спочатку є такі форми багатокутників: «стрілка», «черепаха», «коло», «квадрат», «трикутник», «класика». Щоб дізнатися про те, як працювати з фігурами, перегляньте метод екрану `register_shape()`.

      >>> turtle.shape()
      'classic'
      >>> turtle.shape("turtle")
      >>> turtle.shape()
      'turtle'

`turtle.``resizemode`(rmode=None)
  Параметри

    rmode – один із рядків «auto», «user», «noresize»

  Встановіть для режиму зміни розміру одне зі значень: «авто», «користувач», «норесайз». Якщо rmode не вказано, повертає поточний режим зміни розміру. Різні режими зміни розміру мають такі ефекти:

  - «авто»: адаптує зовнішній вигляд черепахи відповідно до значення pensize.

  - «user»: адаптує зовнішній вигляд черепахи відповідно до значень stretchfactor і outlinewidth (контур), які встановлюються `shapesize()`.

  - «noresize»: адаптація зовнішнього вигляду черепахи не відбувається.

  `resizemode("user")` викликається `shapesize()` при використанні з аргументами.

      >>> turtle.resizemode()
      'noresize'
      >>> turtle.resizemode("auto")
      >>> turtle.resizemode()
      'auto'

`turtle.``shapesize`(stretch_wid=None, stretch_len=None, outline=None)
`turtle.``turtlesize`(stretch_wid=None, stretch_len=None, outline=None)
  Параметри

    - stretch_wid – позитивне число

    - stretch_len – позитивне число

    - outline – позитивне число

  Return or set the pen’s attributes x/y-stretchfactors and/or outline. Set resizemode to «user». If and only if resizemode is set to «user», the turtle will be displayed stretched according to its stretchfactors: stretch_wid is stretchfactor perpendicular to its orientation, stretch_len is stretchfactor in direction of its orientation, outline determines the width of the shape’s outline.

      >>> turtle.shapesize()
      (1.0, 1.0, 1)
      >>> turtle.resizemode("user")
      >>> turtle.shapesize(5, 5, 12)
      >>> turtle.shapesize()
      (5, 5, 12)
      >>> turtle.shapesize(outline=8)
      >>> turtle.shapesize()
      (5, 5, 8)

`turtle.``shearfactor`(shear=None)
  Параметри

    shear – номер (необов’язково)

  Встановити або повернути поточний коефіцієнт зсуву. Зрізайте форму черепахи відповідно до заданого коефіцієнта зсуву, який є тангенсом кута зсуву. Не змінюйте курс (напрямок руху) черепахи. Якщо зсув не вказано: повернути поточний коефіцієнт зсуву, тобто. д. тангенс кута зсуву, за яким зрізаються лінії, паралельні курсу черепахи.

       >>> turtle.shape("circle")
       >>> turtle.shapesize(5,2)
       >>> turtle.shearfactor(0.5)
       >>> turtle.shearfactor()
       0.5

`turtle.``tilt`(angle)
  Параметри

    angle – число

  Поверніть форму черепахи на кут від її поточного кута нахилу, але не змінюйте напрям черепахи (напрямок руху).

      >>> turtle.reset()
      >>> turtle.shape("circle")
      >>> turtle.shapesize(5,2)
      >>> turtle.tilt(30)
      >>> turtle.fd(50)
      >>> turtle.tilt(30)
      >>> turtle.fd(50)

`turtle.``settiltangle`(angle)
  Параметри

    angle – число

  Rotate the turtleshape to point in the direction specified by angle, regardless of its current tilt-angle. Do not change the turtle’s heading (direction of movement).

      >>> turtle.reset()
      >>> turtle.shape("circle")
      >>> turtle.shapesize(5,2)
      >>> turtle.settiltangle(45)
      >>> turtle.fd(50)
      >>> turtle.settiltangle(-45)
      >>> turtle.fd(50)

  Застаріло починаючи з версії 3.1.

`turtle.``tiltangle`(angle=None)
  Параметри

    angle – число (необов’язково)

  Встановити або повернути поточний кут нахилу. Якщо задано кут, обертайте фігуру черепахи в напрямку, визначеному кутом, незалежно від її поточного кута нахилу. Не змінюйте курс (напрямок руху) черепахи. Якщо кут не вказано: повернути поточний кут нахилу, тобто. д. кут між орієнтацією фігури черепахи та курсом черепахи (напрямок її руху).

      >>> turtle.reset()
      >>> turtle.shape("circle")
      >>> turtle.shapesize(5,2)
      >>> turtle.tilt(45)
      >>> turtle.tiltangle()
      45.0

`turtle.``shapetransform`(t11=None, t12=None, t21=None, t22=None)
  Параметри

    - t11 – число (необов’язково)

    - t12 – число (необов’язково)

    - t21 – число (необов’язково)

    - t12 – число (необов’язково)

  Встановити або повернути поточну матрицю перетворення фігури черепахи.

  Якщо жоден з елементів матриці не задано, поверніть матрицю перетворення як кортеж із 4 елементів. В іншому випадку встановіть задані елементи та перетворіть форму черепахи відповідно до матриці, що складається з першого рядка t11, t12 і другого рядка t21, t22. Визначник t11 * t22 - t12 * t21 не повинен дорівнювати нулю, інакше виникає помилка. Змініть коефіцієнт розтягування, коефіцієнт зсуву та кут нахилу відповідно до заданої матриці.

      >>> turtle = Turtle()
      >>> turtle.shape("square")
      >>> turtle.shapesize(4,2)
      >>> turtle.shearfactor(-0.5)
      >>> turtle.shapetransform()
      (4.0, -1.0, -0.0, 2.0)

`turtle.``get_shapepoly`()

  Повертає поточний полігон форми як кортеж пар координат. Це можна використовувати для визначення нової форми або компонентів складеної форми.

      >>> turtle.shape("square")
      >>> turtle.shapetransform(4, -1, 0, 2)
      >>> turtle.get_shapepoly()
      ((50, -20), (30, 20), (-50, 20), (-30, -20))

### Використання подій

`turtle.``onclick`(fun, btn=1, add=None)
  Параметри

    - fun – функція з двома аргументами, яка буде викликана з координатами вибраної точки на полотні

    - btn – номер кнопки миші, за замовчуванням 1 (ліва кнопка миші)

    - add – `True` або `False` - якщо `True`, буде додано нове прив’язування, інакше воно замінить попереднє прив’язування

  Прив’яжіть fun до подій клацання миші на цій черепахі. Якщо fun має значення `None`, існуючі прив’язки видаляються. Приклад для анонімної черепахи, тобто процедурний спосіб:

      >>> def turn(x, y):
      ...     left(180)
      ...
      >>> onclick(turn)  # Now clicking into the turtle will turn it.
      >>> onclick(None)  # event-binding will be removed

`turtle.``onrelease`(fun, btn=1, add=None)
  Параметри

    - fun – функція з двома аргументами, яка буде викликана з координатами вибраної точки на полотні

    - btn – номер кнопки миші, за замовчуванням 1 (ліва кнопка миші)

    - add – `True` або `False` - якщо `True`, буде додано нове прив’язування, інакше воно замінить попереднє прив’язування

  Прив’яжіть fun до подій натискання кнопки миші на цій черепашці. Якщо fun має значення `None`, існуючі прив’язки видаляються.

      >>> class MyTurtle(Turtle):
      ...     def glow(self,x,y):
      ...         self.fillcolor("red")
      ...     def unglow(self,x,y):
      ...         self.fillcolor("")
      ...
      >>> turtle = MyTurtle()
      >>> turtle.onclick(turtle.glow)     # clicking on turtle turns fillcolor red,
      >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.

`turtle.``ondrag`(fun, btn=1, add=None)
  Параметри

    - fun – функція з двома аргументами, яка буде викликана з координатами вибраної точки на полотні

    - btn – номер кнопки миші, за замовчуванням 1 (ліва кнопка миші)

    - add – `True` або `False` - якщо `True`, буде додано нове прив’язування, інакше воно замінить попереднє прив’язування

  Прив’яжіть fun до подій руху миші на цій черепахі. Якщо fun має значення `None`, існуючі прив’язки видаляються.

  Примітка: кожній послідовності подій переміщення миші на черепахі передує подія клацання миші на цій черепашці.

      >>> turtle.ondrag(turtle.goto)

  Згодом, клацання та перетягування Черепахи переміщуватиме її по екрану, таким чином створюючи малюнки (якщо ручка опущена).

### Спеціальні методи Черепахи

`turtle.``begin_poly`()

  Почніть записувати вершини багатокутника. Поточна позиція черепахи є першою вершиною багатокутника.

`turtle.``end_poly`()

  Припинення запису вершин багатокутника. Поточна позиція черепахи є останньою вершиною багатокутника. Це буде пов’язано з першою вершиною.

`turtle.``get_poly`()

  Повернути останній записаний багатокутник.

      >>> turtle.home()
      >>> turtle.begin_poly()
      >>> turtle.fd(100)
      >>> turtle.left(20)
      >>> turtle.fd(30)
      >>> turtle.left(60)
      >>> turtle.fd(50)
      >>> turtle.end_poly()
      >>> p = turtle.get_poly()
      >>> register_shape("myFavouriteShape", p)

`turtle.``clone`()

  Створити та повернути клон черепахи з такими ж властивостями положення, заголовка та черепахи.

      >>> mick = Turtle()
      >>> joe = mick.clone()

`turtle.``getturtle`()
`turtle.``getpen`()

  Поверніть сам об’єкт Черепаха. Лише розумне використання: як функція для повернення «анонімної черепахи»:

      >>> pet = getturtle()
      >>> pet.fd(50)
      >>> pet
      <turtle.Turtle object at 0x...>

`turtle.``getscreen`()

  Повертає об’єкт `TurtleScreen`, на якому малює черепаха. Тоді для цього об’єкта можна викликати методи TurtleScreen.

      >>> ts = turtle.getscreen()
      >>> ts
      <turtle._Screen object at 0x...>
      >>> ts.bgcolor("pink")

`turtle.``setundobuffer`(size)
  Параметри

    size – ціле число або `Жодного`

  Встановити або вимкнути undobuffer. Якщо size є цілим числом, встановлюється порожній undobuffer заданого розміру. size визначає максимальну кількість дій черепахи, які можна скасувати за допомогою методу/функції `undo()`. Якщо size має значення `None`, undobuffer вимкнено.

      >>> turtle.setundobuffer(42)

`turtle.``undobufferentries`()

  Повертає кількість записів у undobuffer.

      >>> while undobufferentries():
      ...     undo()

### Складені форми

Щоб використовувати складені форми черепахи, які складаються з кількох багатокутників різного кольору, ви повинні використовувати допоміжний клас `Shape` явно, як описано нижче:

1. Створіть порожній об’єкт Shape типу «compound».

2. Add as many components to this object as desired, using the `addcomponent()` method.

   Наприклад:

       >>> s = Shape("compound")
       >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
       >>> s.addcomponent(poly1, "red", "blue")
       >>> poly2 = ((0,0),(10,-5),(-10,-5))
       >>> s.addcomponent(poly2, "blue", "red")

3. Тепер додайте форму до списку форм екрана та використовуйте її:

       >>> register_shape("myshape", s)
       >>> shape("myshape")

Примітка

Клас `Shape` використовується внутрішньо методом `register_shape()` різними способами. Програміст прикладної програми має працювати з класом Shape тільки під час використання складених фігур, як показано вище!

## Методи TurtleScreen/Screen та відповідні функції

Більшість прикладів у цьому розділі стосуються екземпляра TurtleScreen під назвою `screen`.

### Віконний контроль

`turtle.``bgcolor`(*args)
  Параметри

    args – кольоровий рядок або три числа в діапазоні 0..colormode або 3-кортеж таких чисел

  Встановити або повернути фоновий колір TurtleScreen.

      >>> screen.bgcolor("orange")
      >>> screen.bgcolor()
      'orange'
      >>> screen.bgcolor("#800080")
      >>> screen.bgcolor()
      (128.0, 0.0, 128.0)

`turtle.``bgpic`(picname=None)
  Параметри

    picname – рядок, назва gif-файлу або `"nopic"`, або `None`

  Установити фонове зображення або повернути назву поточного фонового зображення. Якщо picname є назвою файлу, встановіть відповідне зображення як фонове зображення. Якщо picname має значення `"nopic"`, видаліть фонове зображення, якщо воно є. Якщо picname має значення `None`, повертає назву файлу поточного фонового зображення.

      >>> screen.bgpic()
      'nopic'
      >>> screen.bgpic("landscape.gif")
      >>> screen.bgpic()
      "landscape.gif"

`turtle.``clear`()

  Примітка

  Цей метод TurtleScreen доступний як глобальна функція лише під назвою `clearscreen`. Глобальна функція `clear` є іншою, похідною від методу Turtle `clear`.

`turtle.``clearscreen`()

  Видаліть усі малюнки та всіх черепах із TurtleScreen. Скиньте тепер порожній TurtleScreen до початкового стану: білий фон, без фонового зображення, без прив’язок подій і трасування.

`turtle.``reset`()

  Примітка

  Цей метод TurtleScreen доступний як глобальна функція лише під назвою `resetscreen`. Глобальна функція `reset` є ще однією похідною від методу Turtle `reset`.

`turtle.``resetscreen`()

  Скинути всіх Черепашок на екрані до початкового стану.

`turtle.``screensize`(canvwidth=None, canvheight=None, bg=None)
  Параметри

    - canvwidth – додатне ціле число, нова ширина полотна в пікселях

    - canvheight – натуральне число, нова висота полотна в пікселях

    - bg – рядок кольорів або кортеж кольорів, новий колір тла

  Якщо аргументи не вказано, повертає поточний (ширина полотна, висота полотна). Інакше змініть розмір полотна, на якому малюють черепахи. Не змінюйте вікно малювання. Щоб спостерігати за прихованими частинами полотна, використовуйте смуги прокрутки. За допомогою цього методу можна зробити видимими ті частини малюнка, які раніше були за межами полотна.

      >>> screen.screensize()
      (400, 300)
      >>> screen.screensize(2000,1500)
      >>> screen.screensize()
      (2000, 1500)

  напр. шукати черепаху, яка помилково втекла ;-)

`turtle.``setworldcoordinates`(llx, lly, urx, ury)
  Параметри

    - llx – число, х-координата нижнього лівого кута полотна

    - lly – число, y-координата нижнього лівого кута полотна

    - urx – число, х-координата верхнього правого кута полотна

    - ury – число, y-координата верхнього правого кута полотна

  Налаштуйте визначену користувачем систему координат і за необхідності перейдіть у режим «світ». Це виконує `screen.reset()`. Якщо режим «світ» вже активний, то всі малюнки перемальовуються відповідно до нових координат.

  УВАГА: у визначених користувачем системах координат кути можуть виглядати спотвореними.

      >>> screen.reset()
      >>> screen.setworldcoordinates(-50,-7.5,50,7.5)
      >>> for _ in range(72):
      ...     left(10)
      ...
      >>> for _ in range(8):
      ...     left(45); fd(2)   # a regular octagon

### Керування анімацією

`turtle.``delay`(delay=None)
  Параметри

    delay – натуральне число

  Встановити або повернути затримку малювання в мілісекундах. (Це приблизно інтервал часу між двома послідовними оновленнями полотна.) Що довша затримка малювання, то повільніша анімація.

  Необов’язковий аргумент:

      >>> screen.delay()
      10
      >>> screen.delay(5)
      >>> screen.delay()
      5

`turtle.``tracer`(n=None, delay=None)
  Параметри

    - n – ціле невід’ємне число

    - delay – ціле невід’ємне число

  Увімкніть/вимкніть анімацію черепахи та встановіть затримку для оновлення малюнків. Якщо задано n, дійсно виконується лише кожне n-е регулярне оновлення екрана. (Можна використовувати для прискорення малювання складної графіки.) При виклику без аргументів повертає поточне збережене значення n. Другий аргумент встановлює значення затримки (див. `delay()`).

      >>> screen.tracer(8, 25)
      >>> dist = 2
      >>> for i in range(200):
      ...     fd(dist)
      ...     rt(90)
      ...     dist += 2

`turtle.``update`()

  Виконайте оновлення TurtleScreen. Використовується, коли трасувальник вимкнено.

Дивіться також метод RawTurtle/Turtle `speed()`.

### Використання екранних подій

`turtle.``listen`(xdummy=None, ydummy=None)

  Встановити фокус на TurtleScreen (щоб збирати ключові події). Фіктивні аргументи надаються, щоб можна було передати `listen()` методу onclick.

`turtle.``onkey`(fun, key)
`turtle.``onkeyrelease`(fun, key)
  Параметри

    - fun – функція без аргументів або `None`

    - key – рядок: клавіша (наприклад, «a») або клавіша-символ (наприклад, «пробіл»)

  Прив’яжіть fun до події звільнення ключа ключа. Якщо fun має значення `None`, прив’язки подій видаляються. Примітка: щоб мати можливість реєструвати ключові події, TurtleScreen повинен мати фокус. (Див. метод `listen()`.)

      >>> def f():
      ...     fd(50)
      ...     lt(60)
      ...
      >>> screen.onkey(f, "Up")
      >>> screen.listen()

`turtle.``onkeypress`(fun, key=None)
  Параметри

    - fun – функція без аргументів або `None`

    - key – рядок: клавіша (наприклад, «a») або клавіша-символ (наприклад, «пробіл»)

  Прив’яжіть fun до події натискання клавіші key, якщо клавішу вказано, або до будь-якої події натискання клавіші, якщо клавіша не вказана. Примітка: щоб мати можливість реєструвати ключові події, TurtleScreen повинен мати фокус. (Див. метод `listen()`.)

      >>> def f():
      ...     fd(50)
      ...
      >>> screen.onkey(f, "Up")
      >>> screen.listen()

`turtle.``onclick`(fun, btn=1, add=None)
`turtle.``onscreenclick`(fun, btn=1, add=None)
  Параметри

    - fun – функція з двома аргументами, яка буде викликана з координатами вибраної точки на полотні

    - btn – номер кнопки миші, за замовчуванням 1 (ліва кнопка миші)

    - add – `True` або `False` - якщо `True`, буде додано нове прив’язування, інакше воно замінить попереднє прив’язування

  Прив’яжіть fun до подій клацання миші на цьому екрані. Якщо fun має значення `None`, існуючі прив’язки видаляються.

  Приклад екземпляра TurtleScreen під назвою `screen` і примірника Turtle під назвою `turtle`:

      >>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will
      >>>                             # make the turtle move to the clicked point.
      >>> screen.onclick(None)        # remove event binding again

  Примітка

  Цей метод TurtleScreen доступний як глобальна функція лише під назвою `onscreenclick`. Глобальна функція `onclick` є ще однією похідною від методу Turtle `onclick`.

`turtle.``ontimer`(fun, t=0)
  Параметри

    - fun – функція без аргументів

    - t – число >= 0

  Встановіть таймер, який викликає fun через t мілісекунд.

      >>> running = True
      >>> def f():
      ...     if running:
      ...         fd(50)
      ...         lt(60)
      ...         screen.ontimer(f, 250)
      >>> f()   ### makes the turtle march around
      >>> running = False

`turtle.``mainloop`()
`turtle.``done`()

  Запускає цикл подій - виклик функції основного циклу Tkinter. Має бути останнім оператором у графічній програмі Turtle. Його не можна використовувати, якщо сценарій запускається з IDLE у режимі -n (без підпроцесу) — для інтерактивного використання черепахової графіки.

      >>> screen.mainloop()

### Методи введення

`turtle.``textinput`(title, prompt)
  Параметри

    - title – рядок

    - prompt – рядок

  Відкрити діалогове вікно для введення рядка. Заголовок параметра — це заголовок діалогового вікна, підказка — це текст, який переважно описує, яку інформацію потрібно ввести. Повернути введений рядок. Якщо діалогове вікно скасовано, поверніть `None`.

      >>> screen.textinput("NIM", "Name of first player:")

`turtle.``numinput`(title, prompt, default=None, minval=None, maxval=None)
  Параметри

    - title – рядок

    - prompt – рядок

    - default – номер (необов’язково)

    - minval – номер (необов’язково)

    - maxval – номер (необов’язково)

  Pop up a dialog window for input of a number. title is the title of the dialog window, prompt is a text mostly describing what numerical information to input. default: default value, minval: minimum value for input, maxval: maximum value for input The number input must be in the range minval .. maxval if these are given. If not, a hint is issued and the dialog remains open for correction. Return the number input. If the dialog is canceled, return `None`.

      >>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)

### Налаштування та спеціальні методи

`turtle.``mode`(mode=None)
  Параметри

    mode – один із рядків «standard», «logo» або «world»

  Встановіть режим черепахи («стандартний», «логотип» або «світ») і виконайте скидання. Якщо режим не вказано, повертається поточний режим.

  Режим «стандартний» сумісний зі старим `turtle`. Режим «логотип» сумісний із більшістю зображень логотипів черепахи. Режим «світ» використовує визначені користувачем «світові координати». Увага: у цьому режимі кути виглядають спотвореними, якщо одиничне співвідношення `x/y` не дорівнює 1.

  Режим | Початковий курс черепахи | позитивні кути
  --- | --- | ---
  «стандарт» | праворуч (схід) | проти годинникової стрілки
  «логотип» | вгору (на північ) | за годинниковою стрілкою

      >>> mode("logo")   # resets turtle heading to north
      >>> mode()
      'logo'

`turtle.``colormode`(cmode=None)
  Параметри

    cmode – одне зі значень 1,0 або 255

  Return the colormode or set it to 1.0 or 255. Subsequently r, g, b values of color triples have to be in the range 0..cmode.

      >>> screen.colormode(1)
      >>> turtle.pencolor(240, 160, 80)
      Traceback (most recent call last):
           ...
      TurtleGraphicsError: bad color sequence: (240, 160, 80)
      >>> screen.colormode()
      1.0
      >>> screen.colormode(255)
      >>> screen.colormode()
      255
      >>> turtle.pencolor(240,160,80)

`turtle.``getcanvas`()

  Поверніть Canvas цього TurtleScreen. Корисно для інсайдерів, які знають, що робити з Tkinter Canvas.

      >>> cv = screen.getcanvas()
      >>> cv
      <turtle.ScrolledCanvas object ...>

`turtle.``getshapes`()

  Повертає список імен усіх наявних на даний момент форм черепахи.

      >>> screen.getshapes()
      ['arrow', 'blank', 'circle', ..., 'turtle']

`turtle.``register_shape`(name, shape=None)
`turtle.``addshape`(name, shape=None)

  Існує три різні способи виклику цієї функції:

  1. name — це ім’я gif-файлу, а shape — `None`: установіть відповідну форму зображення.

         >>> screen.register_shape("turtle.gif")

     Примітка

     Фігури зображень не обертаються під час повороту черепахи, тому вони не відображають напрямок черепахи!

  2. name — це довільний рядок, а shape — кортеж пар координат: установіть відповідну форму багатокутника.

         >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))

  3. name is an arbitrary string and shape is a (compound) `Shape` object: Install the corresponding compound shape.

  Додайте форму черепахи до списку форм TurtleScreen. Тільки таким чином зареєстровані форми можна використовувати за допомогою команди `shape(shapename)`.

`turtle.``turtles`()

  Поверніть список черепах на екран.

      >>> for turtle in screen.turtles():
      ...     turtle.color("red")

`turtle.``window_height`()

  Поверніть висоту вікна черепахи.

      >>> screen.window_height()
      480

`turtle.``window_width`()

  Поверніть ширину вікна черепахи.

      >>> screen.window_width()
      640

### Методи, специфічні для Screen, не успадковані від TurtleScreen

`turtle.``bye`()

  Закрийте вікно turtlegraphics.

`turtle.``exitonclick`()

  Прив’яжіть метод `bye()` до клацань миші на екрані.

  Якщо значення «using_IDLE» у словнику конфігурації має значення `False` (значення за замовчуванням), також введіть mainloop. Примітка: якщо використовується IDLE з перемикачем `-n` (без підпроцесу), це значення має бути встановлено на `True` у `turtle.cfg`. У цьому випадку основний цикл IDLE також активний для клієнтського сценарію.

`turtle.``setup`(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])

  Встановіть розмір і положення головного вікна. Стандартні значення аргументів зберігаються у словнику конфігурації та можуть бути змінені за допомогою файлу `turtle.cfg`.

  Параметри

    - width – якщо ціле число, то розмір у пікселях, якщо число з плаваючою точкою, то частка екрана; за замовчуванням 50% екрана

    - height – якщо ціле число, то висота в пікселях, якщо число з плаваючою точкою, то частка екрана; за замовчуванням 75% екрана

    - startx – якщо позитивне, початкова позиція в пікселях від лівого краю екрана, якщо негативне від правого краю, якщо `None`, центр вікна по горизонталі

    - starty – якщо додатне, початкова позиція в пікселях від верхнього краю екрана, якщо негативне від нижнього краю, якщо `None`, центр вікна по вертикалі

      >>> screen.setup (width=200, height=200, startx=0, starty=0)
      >>>              # sets window to 200x200 pixels, in upper left of screen
      >>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
      >>>              # sets window to 75% of screen by 50% of screen and centers

`turtle.``title`(titlestring)
  Параметри

    titlestring – рядок, який відображається в рядку заголовка графічного вікна Turtle

  Встановіть назву вікна Turtle на titlestring.

      >>> screen.title("Welcome to the turtle zoo!")

## Публічні заняття

class `turtle.``RawTurtle`(canvas)
class `turtle.``RawPen`(canvas)
  Параметри

    canvas – a `tkinter.Canvas`, a `ScrolledCanvas` or a `TurtleScreen`

  Створіть черепаху. Черепаха має всі методи, описані вище як «методи Turtle/RawTurtle».

class `turtle.``Turtle`

  Підклас RawTurtle має той самий інтерфейс, але використовує стандартний об’єкт `Screen`, створений автоматично, коли це потрібно вперше.

class `turtle.``TurtleScreen`(cv)
  Параметри

    cv – a `tkinter.Canvas`

  Provides screen oriented methods like `bgcolor()` etc. that are described above.

class `turtle.``Screen`

  Підклас TurtleScreen із чотирма доданими методами.

class `turtle.``ScrolledCanvas`(master)
  Параметри

    master – деякий віджет Tkinter, який містить ScrolledCanvas, тобто Tkinter-полотно з доданими смугами прокрутки

  Використовується класом Screen, який таким чином автоматично надає ScrolledCanvas як ігровий майданчик для черепах.

class `turtle.``Shape`(type_, data)
  Параметри

    type_ – один із рядків «polygon», «image», «compound»

  Форми моделювання структури даних. Пара `(тип_, дані)` має відповідати цій специфікації:

  тип_ | дані
  --- | ---
  «багатокутник» | полігон-кортеж, тобто кортеж пар координат
  «зображення» | зображення (у цій формі використовується лише внутрішньо!)
  «з’єднання» | `None` (складена форма має бути створена за допомогою методу `addcomponent()`)

  `addcomponent`(poly, fill, outline=None)
    Параметри

      - poly – багатокутник, тобто кортеж пар чисел

      - fill – колір, яким буде заповнено poly

      - outline – колір контуру поля (якщо вказано)

    приклад:

        >>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
        >>> s = Shape("compound")
        >>> s.addcomponent(poly, "red", "blue")
        >>> # ... add more components and then use register_shape()

    Дивіться Складені форми.

class `turtle.``Vec2D`(x, y)

  Двовимірний векторний клас, який використовується як допоміжний клас для реалізації графіки черепахи. Також може бути корисним для графічних програм черепах. Походить від кортежу, тому вектор є кортежем!

  Надає (для a, b векторів, k числа):

  - `a + b` додавання вектора

  - Віднімання вектора `a - b`

  - `a * b` скалярний добуток

  - Множення `k * a` і `a * k` на скаляр

  - `abs(a)` абсолютне значення a

  - `a.rotate(angle)` обертання

## Допомога та налаштування

### Як користуватися довідкою

Загальнодоступні методи класів Screen і Turtle широко задокументовані в рядках документації. Тож їх можна використовувати як онлайн-довідку через засоби довідки Python:

- Під час використання IDLE підказки показують підписи та перші рядки рядків документації введених викликів функцій/методів.

- Виклик `help()` для методів або функцій відображає рядки документів:

      >>> help(Screen.bgcolor)
      Help on method bgcolor in module turtle:

      bgcolor(self, *args) unbound turtle.Screen method
          Set or return backgroundcolor of the TurtleScreen.

          Arguments (if given): a color string or three numbers
          in the range 0..colormode or a 3-tuple of such numbers.

            >>> screen.bgcolor("orange")
            >>> screen.bgcolor()
            "orange"
            >>> screen.bgcolor(0.5,0,0.5)
            >>> screen.bgcolor()
            "#800080"

      >>> help(Turtle.penup)
      Help on method penup in module turtle:

      penup(self) unbound turtle.Turtle method
          Pull the pen up -- no drawing when moving.

          Aliases: penup | pu | up

          No argument

          >>> turtle.penup()

- Документаційні рядки функцій, які є похідними від методів, мають змінену форму:

      >>> help(bgcolor)
      Help on function bgcolor in module turtle:

      bgcolor(*args)
          Set or return backgroundcolor of the TurtleScreen.

          Arguments (if given): a color string or three numbers
          in the range 0..colormode or a 3-tuple of such numbers.

          Example::

            >>> bgcolor("orange")
            >>> bgcolor()
            "orange"
            >>> bgcolor(0.5,0,0.5)
            >>> bgcolor()
            "#800080"

      >>> help(penup)
      Help on function penup in module turtle:

      penup()
          Pull the pen up -- no drawing when moving.

          Aliases: penup | pu | up

          No argument

          Example:
          >>> penup()

Ці змінені рядки документації створюються автоматично разом із визначеннями функцій, отриманими з методів під час імпорту.

### Переклад рядків документів різними мовами

Існує утиліта для створення словника, ключами якого є імена методів, а значеннями яких є рядки документів відкритих методів класів Screen і Turtle.

`turtle.``write_docstringdict`(filename='turtle_docstringdict')
  Параметри

    filename – рядок, який використовується як ім’я файлу

  Створіть і запишіть docstring-dictionary у сценарій Python із вказаною назвою файлу. Цю функцію потрібно викликати явно (вона не використовується графічними класами turtle). Словник рядків документів буде записаний у сценарій Python `filename.py`. Він призначений для того, щоб служити шаблоном для перекладу рядків документів різними мовами.

Якщо ви (або ваші студенти) бажаєте використовувати `turtle` з онлайн-довідкою вашою рідною мовою, вам потрібно перекласти рядки документації та зберегти отриманий файл як, напр. `turtle_docstringdict_german.py`.

Якщо у вашому файлі `turtle.cfg` є відповідний запис, цей словник буде зчитано під час імпортування та замінить оригінальні англійські рядки документів.

На момент написання цієї статті існують словники docstring німецькою та італійською мовами. (Запити надсилайте на glingl@aon.at.)

### Як налаштувати екран і черепахи

Вбудована конфігурація за замовчуванням імітує зовнішній вигляд і поведінку старого модуля Turtle, щоб зберегти найкращу сумісність із ним.

Якщо ви хочете використовувати іншу конфігурацію, яка краще відображає функції цього модуля або яка краще відповідає вашим потребам, напр. для використання в класі ви можете підготувати файл конфігурації `turtle.cfg`, який буде прочитано під час імпорту та змінено конфігурацію відповідно до його параметрів.

The built in configuration would correspond to the following `turtle.cfg`:

    width = 0.5
    height = 0.75
    leftright = None
    topbottom = None
    canvwidth = 400
    canvheight = 300
    mode = standard
    colormode = 1.0
    delay = 10
    undobuffersize = 1000
    shape = classic
    pencolor = black
    fillcolor = black
    resizemode = noresize
    visible = True
    language = english
    exampleturtle = turtle
    examplescreen = screen
    title = Python Turtle Graphics
    using_IDLE = False

Коротке пояснення вибраних записів:

- The first four lines correspond to the arguments of the `Screen.setup` method.

- Line 5 and 6 correspond to the arguments of the method `Screen.screensize`.

- shape може бути будь-якою вбудованою формою, наприклад: стрілка, черепаха тощо. Щоб дізнатися більше, спробуйте `help(shape)`.

- If you want to use no fill color (i.e. make the turtle transparent), you have to write `fillcolor = ""` (but all nonempty strings must not have quotes in the cfg file).

- Якщо ви хочете відобразити черепаху в її стані, ви повинні використовувати `resizemode = auto`.

- If you set e.g. `language = italian` the docstringdict `turtle_docstringdict_italian.py` will be loaded at import time (if present on the import path, e.g. in the same directory as `turtle`.

- Записи exampleturtle і examplescreen визначають імена цих об’єктів, як вони зустрічаються в рядках документації. Трансформація method-docstrings у function-docstrings видалить ці імена з docstrings.

- using_IDLE: Set this to `True` if you regularly work with IDLE and its -n switch («no subprocess»). This will prevent `exitonclick()` to enter the mainloop.

У каталозі, де зберігається `turtle`, може бути файл `turtle.cfg` і додатковий у поточному робочому каталозі. Останній замінить налаштування першого.

Каталог `Lib/turtledemo` містить файл `turtle.cfg`. Ви можете вивчити його як приклад і побачити його вплив під час запуску демонстрацій (бажано не з програми перегляду демонстрацій).

## `turtledemo` — Демонстраційні скрипти

Пакет `turtledemo` містить набір демонстраційних скриптів. Ці сценарії можна запускати та переглядати за допомогою демонстраційного засобу перегляду, що входить до комплекту, наступним чином:

    python -m turtledemo

Крім того, ви можете запускати демонстраційні сценарії окремо. Наприклад,

    python -m turtledemo.bytedesign

Каталог пакунків `turtledemo` містить:

- Демо-переглядач `__main__.py`, який можна використовувати для перегляду вихідного коду сценаріїв і запуску їх одночасно.

- Кілька сценаріїв, що демонструють різні функції модуля `turtle`. Доступ до прикладів можна отримати через меню «Приклади». Їх також можна запускати автономно.

- Файл `turtle.cfg`, який служить прикладом того, як писати та використовувати такі файли.

Демонстраційні сценарії:

Ім’я | опис | особливості
--- | --- | ---
bytedesign | складний класичний графічний візерунок черепахи | `tracer()`, затримка, `update()`
хаос | графіки динаміки Верхульста показують, що комп’ютерні обчислення можуть генерувати результати, іноді проти очікувань здорового глузду | світові координати
годинник | аналоговий годинник, який показує час вашого комп’ютера | черепахи як стрілки годинника, онтаймер
colormixer | дослід з r, g, b | `ondrag()`
ліс | 3 дерева в ширину | рандомізація
фрактальні криві | Криві Гільберта і Коха | рекурсія
лінденмайер | етноматематика (індійські колами) | L-система
minimal_hanoi | Ханойські вежі | Прямокутні черепахи як ханойські диски (форма, розмір)
нім | грати в класичну гру nim з трьома купами палиць проти комп’ютера. | черепахи як німки, керовані подіями (миша, клавіатура)
фарба | супер мінімалістична програма для малювання | `onclick()`
мир | елементарний | черепаха: зовнішній вигляд і анімація
Пенроуз | аперіодичне укладання з повітряними зміями та дротиками | `stamp()`
планета_і_місяць | моделювання гравітаційної системи | складені форми, `Vec2D`
rosette | зразок зі статті у Вікіпедії про черепахову графіку | `clone()`, `undo()`
хоровод | танцюючі черепахи, що обертаються попарно в протилежному напрямку | складені форми, клон shapesize, нахил, get_shapepoly, оновлення
sorting_animate | наочна демонстрація різних методів сортування | просте вирівнювання, рандомізація
дерево | (графічне) дерево в ширину (з використанням генераторів) | `clone()`
два_полотна | простий дизайн | черепахи на двох полотнах
Інь Янь | ще один елементарний приклад | `circle()`

весело провести час!

## Зміни з Python 2.6

- The methods `Turtle.tracer`, `Turtle.window_width` and `Turtle.window_height` have been eliminated. Methods with these names and functionality are now available only as methods of `Screen`. The functions derived from these remain available. (In fact already in Python 2.6 these methods were merely duplications of the corresponding `TurtleScreen`/`Screen` methods.)

- The method `Turtle.fill()` has been eliminated. The behaviour of `begin_fill()` and `end_fill()` have changed slightly: now every filling process must be completed with an `end_fill()` call.

- A method `Turtle.filling` has been added. It returns a boolean value: `True` if a filling process is under way, `False` otherwise. This behaviour corresponds to a `fill()` call without arguments in Python 2.6.

## Зміни з Python 3.0

- The `Turtle` methods `shearfactor()`, `shapetransform()` and `get_shapepoly()` have been added. Thus the full range of regular linear transforms is now available for transforming turtle shapes. `tiltangle()` has been enhanced in functionality: it now can be used to get or set the tilt angle. `settiltangle()` has been deprecated.

- The `Screen` method `onkeypress()` has been added as a complement to `onkey()`. As the latter binds actions to the key release event, an alias: `onkeyrelease()` was also added for it.

- The method `Screen.mainloop` has been added, so there is no longer a need to use the standalone `mainloop()` function when working with `Screen` and `Turtle` objects.

- Two input methods have been added: `Screen.textinput` and `Screen.numinput`. These pop up input dialogs and return strings and numbers respectively.

- Два приклади сценаріїв `tdemo_nim.py` і `tdemo_round_dance.py` додано до каталогу `Lib/turtledemo`.