"turtle" --- Gráficos Tartaruga
*******************************

**Código-fonte:** Lib/turtle.py

======================================================================


Introdução
==========

Gráficos turtle é uma forma popular de introduzir programação para
crianças. Era parte da linguagem de programação Logo desenvolvida por
Wally Feuzeig, Seymour Papert and Cynthia Solomon em 1967.

Imagine uma tartaruga robótica começando em (0, 0) no plano x-y.
Depois de um "import turtle", dê-lhe o comando "turtle.forward(15)", e
ela moverá (na tela!) 15 pixels na direção em que está virada (para
frente), desenhando uma linha à medida que ela se move. Digite o
comando "turtle.right(25)", e faça ela girar, no lugar, 25 graus no
sentido horário.


Turtle star
^^^^^^^^^^^

A tartaruga pode desenhar formas intrincadas usando programas que
repetem movimentos simples.

[imagem]

   from turtle import *
   color('red', 'yellow')
   begin_fill()
   while True:
       forward(200)
       left(170)
       if abs(pos()) < 1:
           break
   end_fill()
   done()

Ao combinar esses comandos similares, formas intrincadas e imagens
podem ser desenhadas facilmente.

O módulo "turtle" é uma reimplementação estendida de um módulo de
mesmo nome da distribuição padrão do Python até a versão Python 2.5.

Ele tenta manter as características do antigo módulo turtle e ser
(quase) 100% compatível com ele. Isso significa, em primeiro lugar,
permitir que o programador iniciante use todos os comandos, classes e
métodos interativamente ao usar o módulo de dentro do IDLE executado
com a chave "-n".

O módulo turtle fornece gráficos rudimentares, tanto para programação
orientada a objetos quanto procedural. Como ele usa o "tkinter" como
módulo gráfico, ele necessita de uma versão do instalada do Python que
suporta o Tk.

A interface orientada a objetos usa essencialmente duas classes (e
duas subclasses):

1. A classe "TurtleScreen" define as janelas gráficas como um parque
   de diversões para as tartarugas de desenho. Seu construtor precisa
   de um "tkinter.Canvas" ou um "ScrolledCanvas" como argumento. Deve
   ser usado quando "turtle" é usado como parte de algum aplicativo.

   A função "Screen()" retorna um objeto singleton de uma subclasse
   "TurtleScreen". Esta função deve ser usada quando "turtle" é usado
   como uma ferramenta autônoma para fazer gráficos. Como um objeto
   singleton, não é possível herdar de sua classe.

   Todos os métodos de TurtleScreen/Screen também existem como
   funções, ou seja, como parte da interface orientada a
   procedimentos.

2. "RawTurtle" (pedido: "RawPen") define objetos Turtle que desenham
   em uma "TurtleScreen". Seu construtor precisa de um Canvas,
   ScrolledCanvas ou TurtleScreen como argumento, para que os objetos
   RawTurtle saibam onde desenhar.

   Derivada de RawTurtle é a subclasse "Turtle" (alias: "Pen"), que se
   baseia "na" instância "Screen" que é criada automaticamente, se
   ainda não estiver presente.

   Todos os métodos de RawTurtle/Turtle também existem como funções,
   isto é, parte de uma interface procedural orientada à objeto.

A interface procedural fornece funções que são derivadas dos métodos
das classes "Screen" e "Turtle". Eles têm os mesmos nomes que os
métodos correspondentes. Um objeto de tela é criado automaticamente
sempre que uma função derivada de um método de tela é chamada. Um
objeto turtle (sem nome) é criado automaticamente sempre que qualquer
uma das funções derivadas de um método Turtle é chamada.

Para usar várias tartarugas em uma tela, é preciso usar a interface
orientada a objetos.

Nota:

  Na documentação a seguir, a lista de argumentos para funções é
  fornecida. Os métodos, é claro, têm o primeiro argumento adicional
  *self* que é omitido aqui.


Visão geral dos métodos Turtle e Screen disponíveis
===================================================


Métodos de Turtle
-----------------

Movimentos de Turtle
   Movimento e desenho
         "forward()" | "fd()"
         "backward()" | "bk()" | "back()"
         "right()" | "rt()"
         "left()" | "lt()"
         "goto()" | "setpos()" | "setposition()"
         "setx()"
         "sety()"
         "setheading()" | "seth()"
         "home()"
         "circle()"
         "dot()"
         "stamp()"
         "clearstamp()"
         "clearstamps()"
         "undo()"
         "speed()"

   Fala o estado de Turtle
         "position()" | "pos()"
         "towards()"
         "xcor()"
         "ycor()"
         "heading()"
         "distance()"

   Configuração e Medidas
         "degrees()"
         "radians()"

Controle da Caneta
   Estado do Desenho
         "pendown()" | "pd()" | "down()"
         "penup()" | "pu()" | "up()"
         "pensize()" | "width()"
         "pen()"
         "isdown()"

   Controle da Cor
         "color()"
         "pencolor()"
         "fillcolor()"

   Preenchimento
         "filling()"
         "begin_fill()"
         "end_fill()"

   Mais sobre o Controle do Desenho
         "reset()"
         "clear()"
         "write()"

Estado da tartaruga
   Visibilidade
         "showturtle()" | "st()"
         "hideturtle()" | "ht()"
         "isvisible()"

   Aparência
         "shape()"
         "resizemode()"
         "shapesize()" | "turtlesize()"
         "shearfactor()"
         "settiltangle()"
         "tiltangle()"
         "tilt()"
         "shapetransform()"
         "get_shapepoly()"

Eventos Utilizados
      "onclick()"
      "onrelease()"
      "ondrag()"

Métodos Especiais da Tartaruga
      "begin_poly()"
      "end_poly()"
      "get_poly()"
      "clone()"
      "getturtle()" | "getpen()"
      "getscreen()"
      "setundobuffer()"
      "undobufferentries()"


Métodos de TurtleScreen/Screen
------------------------------

Controle da Janela
      "bgcolor()"
      "bgpic()"
      "clearscreen()"
      "resetscreen()"
      "screensize()"
      "setworldcoordinates()"

Controle da animação
      "delay()"
      "tracer()"
      "update()"

Usando os eventos de tela
      "listen()"
      "onkey()" | "onkeyrelease()"
      "onkeypress()"
      "onclick()" | "onscreenclick()"
      "ontimer()"
      "mainloop()" | "done()"

Configurações e métodos especiais
      "mode()"
      "colormode()"
      "getcanvas()"
      "getshapes()"
      "register_shape()" | "addshape()"
      "turtles()"
      "window_height()"
      "window_width()"

Métodos de entrada
      "textinput()"
      "numinput()"

Métodos específicos para Screen
      "bye()"
      "exitonclick()"
      "setup()"
      "title()"


Métodos de RawTurtle/Turtle e funções correspondentes
=====================================================

A maioria dos exemplos desta seção referem-se a uma instância Turtle
chamada "turtle".


Movimentos de Turtle
--------------------

turtle.forward(distance)
turtle.fd(distance)

   Parâmetros:
      **distance** -- um número (inteiro ou ponto flutuante)

   Move a tartaruga para frente pela *distance* especificada, na
   direção em que a tartaruga está indo.

      >>> 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)

   Parâmetros:
      **distance** -- um número

   Move a tartaruga para trás por *distance*, na direção oposta à
   direção em que a tartaruga está indo. Não muda o rumo da tartaruga.

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

turtle.right(angle)
turtle.rt(angle)

   Parâmetros:
      **angle** -- um número (inteiro ou ponto flutuante)

   Vira a tartaruga à direita por unidades de *angle*. (As unidades
   são por padrão graus, mas podem ser definidas através das funções
   "degrees()" e "radians()".) A orientação do ângulo depende do modo
   tartaruga, veja "mode()".

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

turtle.left(angle)
turtle.lt(angle)

   Parâmetros:
      **angle** -- um número (inteiro ou ponto flutuante)

   Vira a tartaruga à esquerda por unidades de *angle*. (As unidades
   são por padrão graus, mas podem ser definidas através das funções
   "degrees()" e "radians()".) A orientação do ângulo depende do modo
   tartaruga, veja "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)

   Parâmetros:
      * **x** -- um número ou um par/vetor de números

      * **y** -- um número ou "None"

   Se *y* for "None", *x* deve ser um par de coordenadas ou uma classe
   "Vec2D" (por exemplo, como retornado pela função "pos()").

   Move a tartaruga para uma posição absoluta. Caso a caneta esteja
   virada para baixo, traça a linha. Não altera a orientação da
   tartaruga.

       >>> 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)

   Parâmetros:
      **x** -- um número (inteiro ou ponto flutuante)

   Define a primeira coordenada da tartaruga para *x*, deixa a segunda
   coordenada inalterada.

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

turtle.sety(y)

   Parâmetros:
      **y** -- um número (inteiro ou ponto flutuante)

   Defina a segunda coordenada da tartaruga para *y*, deixa a primeira
   coordenada inalterada.

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

turtle.setheading(to_angle)
turtle.seth(to_angle)

   Parâmetros:
      **to_angle** -- um número (inteiro ou ponto flutuante)

   Define a orientação da tartaruga para  *to_angle*. Aqui estão
   algumas direções mais comuns em graus:

   +---------------------+----------------------+
   | modo padrão         | modo logo            |
   |=====================|======================|
   | 0 - leste           | 0 - norte            |
   +---------------------+----------------------+
   | 90 - norte          | 90 - leste           |
   +---------------------+----------------------+
   | 180 - oeste         | 180 - sul            |
   +---------------------+----------------------+
   | 270 - sul           | 270 - oeste          |
   +---------------------+----------------------+

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

turtle.home()

   Move a tartaruga para a origem -- coordenadas (0,0) -- e define seu
   rumo para sua orientação inicial (que depende do modo, veja
   "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)

   Parâmetros:
      * **radius** -- um número

      * **extent** -- um número (ou "None")

      * **steps** -- um inteiro  (ou "None")

   Desenha um círculo com dado *radius*. O centro são as unidades de
   *radius* à esquerda da tartaruga; *extent* -- um ângulo --
   determina qual parte do círculo é desenhada. Se *extent* não for
   fornecida, desenha o círculo inteiro. Se *extent* não for um
   círculo completo, uma extremidade do arco será a posição atual da
   caneta. Desenha o arco no sentido anti-horário se *radius* for
   positivo, caso contrário, no sentido horário. Finalmente, a direção
   da tartaruga é alterada pela quantidade de *extent*.

   Como o círculo é aproximado por um polígono regular inscrito,
   *steps* determina o número de passos a serem usados. Caso não seja
   informado, será calculado automaticamente. Pode ser usado para
   desenhar polígonos regulares.

      >>> 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)

   Parâmetros:
      * **size** -- um inteiro >= 1  (caso seja fornecido)

      * **color** -- uma string de cores ou uma tupla de cores
        numéricas

   Desenha um ponto circular com diâmetro *size*, usando *color*. Se
   *size* não for fornecido, o máximo de pensize+4 e 2*pensize será
   usado.

      >>> 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()

   Carimba uma cópia da forma da tartaruga na tela na posição atual da
   tartaruga. Retorna um stamp_id para esse carimbo, que pode ser
   usado para excluí-lo chamando "clearstamp(stamp_id)".

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

turtle.clearstamp(stampid)

   Parâmetros:
      **stampid** -- um inteiro, deve ser o valor de retorno da
      chamada de "stamp()" anterior

   Exclui o carimbo com o *stamp* fornecido.

      >>> 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)

   Parâmetros:
      **n** -- um inteiro  (ou "None")

   Exclui todos ou o primeiro/último *n* dos selos da tartaruga. Se
   *n* for "None", exclui todos os carimbos, se *n* > 0 exclui os
   primeiros *n* carimbos, senão se *n* < 0 exclui os últimos *n*
   carimbos.

      >>> 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()

   Desfaz (repetidamente) a(s) última(s) ação(ões) da tartaruga. O
   número de ações de desfazer disponíveis é determinado pelo tamanho
   do buffer de desfazer.

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

turtle.speed(speed=None)

   Parâmetros:
      **speed** -- um inteiro no intervalo 0..10 ou uma string de
      velocidade (veja abaixo)

   Define a velocidade da tartaruga para um valor inteiro no intervalo
   0..10. Se nenhum argumento for fornecido, retorna a velocidade
   atual.

   Se a entrada for um número maior que 10 ou menor que 0,5, a
   velocidade é definida como 0. As strings de velocidade são mapeadas
   para valores de velocidade da seguinte forma:

   * "fastest": 0

   * "fast": 10

   * "normal": 6

   * "slow": 3

   * "slowest": 1

   Velocidades de 1 a 10  tornam a animação cada vez mais rápida,
   tanto para o desenho da linha  como para a rotação da tartaruga.

   Atenção: *speed* = 0 significa que *nenhuma* animação ocorre.
   forward/back faz a tartaruga pular e da mesma forma para left/right
   faz a tartaruga girar instantaneamente.

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


Fala o estado de Turtle
-----------------------

turtle.position()
turtle.pos()

   Retorna a localização atual da tartaruga (x,y) (como um vetor
   "Vec2D").

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

turtle.towards(x, y=None)

   Parâmetros:
      * **x** -- um número ou um par/vetor de números ou uma instância
        de tartaruga

      * **y** -- um número caso *x* seja um número, senão "None"

   Retorna o ângulo entre a linha da posição da tartaruga para a
   posição especificada por (x,y), o vetor ou a outra tartaruga. Isso
   depende da orientação inicial da tartaruga, que depende do modo -
   "standard"/"world" ou "logo".

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

turtle.xcor()

   Retorna a coordenada X da tartaruga.

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

turtle.ycor()

   Retorna a coordenada Y da tartaruga.

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

turtle.heading()

   Retorna o título atual da tartaruga (o valor depende do modo da
   tartaruga, veja "mode()").

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

turtle.distance(x, y=None)

   Parâmetros:
      * **x** -- um número ou um par/vetor de números ou uma instância
        de tartaruga

      * **y** -- um número caso *x* seja um número, senão "None"

   Retorna a distância da tartaruga para (x,y), o vetor dado, ou a
   outra tartaruga dada, em unidades de passo de tartaruga.

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


Configurações de medida
-----------------------

turtle.degrees(fullcircle=360.0)

   Parâmetros:
      **fullcircle** -- um número

   Define as unidades de medição do ângulo, ou seja, defina o número
   de "graus" para um círculo completo. O valor padrão é 360 graus.

      >>> 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()

   Define as unidades de medida de ângulo para radianos. Equivalente a
   "degrees(2*math.pi)".

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


Controle da Caneta
------------------


Estado do Desenho
~~~~~~~~~~~~~~~~~

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

   Desce a caneta - desenha ao se mover.

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

   Levanta a caneta -- sem qualquer desenho ao se mover.

turtle.pensize(width=None)
turtle.width(width=None)

   Parâmetros:
      **width** -- um número positivo

   Define a espessura da linha para *width* ou retorna-a. Se
   resizemode estiver definido como "auto" e a forma de tartaruga for
   um polígono, esse polígono será desenhado com a mesma espessura de
   linha. Se nenhum argumento for fornecido, a espessura atual da
   caneta será retornada.

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

turtle.pen(pen=None, **pendict)

   Parâmetros:
      * **pen** -- um dicionário com algumas ou todas as chaves
        listadas abaixo

      * **pendict** -- um ou mais argumentos nomeados com as chaves
        listadas abaixo como palavras-chave

   Retorna ou define os atributos da caneta em um "dicionário da
   caneta" com os seguintes pares de chave/valor:

   * "shown": True/False

   * "pendown": True/False

   * "pencolor": string de cores ou tupla de cores

   * "fillcolor": string de cores ou tupla de cores

   * "pensize": número positivo

   * "speed": número na faixa de 0..10.

   * "resizemode": "auto", "user" ou "noresize"

   * "stretchfactor": (número positivo, número positivo)

   * "outline": número positivo

   * "tilt": número

   Este dicionário pode ser usado como argumento para uma chamada
   subsequente para "pen()" para restaurar o estado da caneta
   anterior. Além disso, um ou mais desses atributos podem ser
   fornecidos como argumentos nomeados. Isso pode ser usado para
   definir vários atributos de caneta em uma instrução.

      >>> 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()

   Retorna "True" se a caneta estiver abaixada, "False" se estiver
   levantada.

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


Controle da Cor
~~~~~~~~~~~~~~~

turtle.pencolor(*args)

   Retorna ou define a cor da caneta ou pencolor.

   São permitidos quatro formatos de entrada:

   "pencolor()"
      Retorna a cor da caneta atual como string de especificação de
      cor ou como uma tupla (veja o exemplo). Pode ser usado como
      entrada para outra chamada color/pencolor/fillcolor.

   "pencolor(colorstring)"
      Define pencolor como *colorstring*, que é uma string de
      especificação de cor Tk, como ""red"", ""yellow"" ou
      ""#33cc8c"".

   "pencolor((r, g, b))"
      Define a cor da caneta como a cor RGB representada pela tupla
      *r*, *g*, e *b*. Os valores de *r*, *g*, and *b* precisam estar
      na faixa 0..colormode, onde colormode é 1.0 ou 255 (ver
      "colormode()").

   "pencolor(r, g, b)"
      Define a cor da caneta como a cor RGB representada por *r*, *g*,
      e *b*. Os valores de *r*, *g*, and *b* precisam estar na faixa
      0..colormode.

   Se a forma da tartaruga for um polígono, o contorno desse polígono
   será desenhado com a nova cor de caneta definida.

       >>> 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)

   Retorna ou define o fillcolor.

   São permitidos quatro formatos de entrada:

   "fillcolor()"
      Retorna a cor de preenchimento atual como string, ou em formato
      de tupla (veja o exemplo).  Pode ser usado como entrada para
      outra chamada color/pencolor/fillcolor.

   "fillcolor(colorstring)"
      Define fillcolor como *colorstring*, que é uma especificação de
      cor do Tk em formato de string, como ""red"", ""yellow"", ou
      ""#33cc8c"".

   "fillcolor((r, g, b))"
      Define fillcolor como a cor no padrão RGB representada por tupla
      de *r*, *g* e *b*.  Cada um de *r*, *g* e *b* deve estar no
      limite 0..colormode, em que colormode é 1,0 ou 255 (consulte
      "colormode()").

   "fillcolor(r, g, b)"
      Define fillcolor como uma cor no formato RGB representada por
      *r*, *g* e *b*.  Cada um dos elementos *r*, *g* e *b* devem
      estar no limite 0..colormode.

   Se turtleshape for um polígono, o interior desse polígono será
   desenhado com a nova cor de preenchimento definida.

       >>> 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)

   Retorna ou define os valores de pencolor e fillcolor.

   Diversos formatos de entrada são permitidos.  Eles usam de 0 a 3
   argumentos da seguinte forma:

   "color()"
      Retorna os valores atuais de pencolor e fillcollor como um par
      de cores como strings ou tuplas conforme retornado por
      "pencolor()" e "fillcolor()".

   "color(colorstring)", "color((r,g,b))", "color(r,g,b)"
      Entradas como em "pencolor()", define ambos, fillcolor e
      pencolor, para o valor informado.

   "color(colorstring1, colorstring2)", "color((r1,g1,b1),
   (r2,g2,b2))"
      Equivalente a "pencolor(colorstring1)" e
      "fillcolor(colorstring2)" e de forma análoga se a outra
      formatação de entrada for usada.

   Se o turtleshape for um polígono, o contorno e o interior desse
   polígono serão desenhados com as cores recém-definidas.

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

Veja também: Método da tela "colormode()".


Preenchimento
~~~~~~~~~~~~~

turtle.filling()

   Retorna fillstate ("True" se estiver preenchido, "False" caso
   contrário).

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

turtle.begin_fill()

   Deve ser chamado antes de desenhar uma forma a ser preenchida.

turtle.end_fill()

   Preenche a forma desenhada após a última chamada para
   "begin_fill()".

   O preenchimento ou não de regiões sobrepostas para polígonos que se
   cruzam ou formas múltiplas depende dos gráficos do sistema
   operacional, do tipo de sobreposição e do número de sobreposições.
   Por exemplo, a estrela da Tartaruga acima pode ser toda amarela ou
   ter algumas regiões brancas.

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


Mais sobre o Controle do Desenho
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

turtle.reset()

   Remove os desenhos da tartaruga da tela, centraliza novamente a
   tartaruga e define as variáveis para os valores padrões.

      >>> 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()

   Exclui os desenhos da tartaruga da tela e não move a tartaruga. O
   atual estado e posição da tartaruga, bem como os desenhos de outras
   tartarugas, não são afetados.

turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal"))

   Parâmetros:
      * **arg** -- objeto a ser escrito na TurtleScreen

      * **move** -- True/False

      * **align** -- uma das Strings "left", "center" ou right"

      * **font** -- a triple (fontname, fontsize, fonttype)

   Escreve o texto - a representação string de *arg* - na posição
   atual da tartaruga de acordo com *align* ("left", "center" ou
   "right") e com a fonte fornecida. Se *move* for verdadeiro, a
   caneta será movida para o canto inferior direito do texto.  Por
   padrão, *move* é "False".

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


Estado da tartaruga
-------------------


Visibilidade
~~~~~~~~~~~~

turtle.hideturtle()
turtle.ht()

   Torna a tartaruga invisível.  É uma boa ideia fazer isso enquanto
   estiver fazendo algum desenho complexo, pois ocultar a tartaruga
   acelera o desenho de forma visível.

      >>> turtle.hideturtle()

turtle.showturtle()
turtle.st()

   Tornar a tartaruga visível.

      >>> turtle.showturtle()

turtle.isvisible()

   Retorna "True" se a Tartaruga for exibida, "False" se estiver
   oculta.

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


Aparência
~~~~~~~~~

turtle.shape(name=None)

   Parâmetros:
      **name** -- uma string que é um shapename válido

   Define a forma da tartaruga para a forma com o *nome* fornecido ou,
   se o nome não for fornecido, retorna nome da forma atual.  A forma
   com *name* deve existir no dicionário TurtleScreen. Inicialmente,
   há as seguintes formas de polígono: "arrow" (seta), "turtle"
   (tartaruga), "circle" (círculo), "square" (quadrado), "triangle"
   (triângulo), "classic" (clássico). Para saber mais sobre como lidar
   com formas, consulte o método Screen "register_shape()" .

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

turtle.resizemode(rmode=None)

   Parâmetros:
      **rmode** -- uma das Strings "auto", "user", "noresize"

   Define resizemode como um dos valores: "auto", "user", "noresize".
   Se *rmode* não for fornecido, retorna o modo de redimensionamento
   atual.  Os diferentes modos de redimensionamento têm os seguintes
   efeitos:

   * "auto": adapta a aparência da tartaruga correspondente ao valor
     do pensize.

   * "user": adapta a aparência da tartaruga de acordo com os valores
     de stretchfactor e outlinewidth (outline), que são definidos por
     "shapesize()".

   * "noresize": não acontece nenhuma adaptação na aparência da
     tartaruga.

   "resizemode("user")" é chamado por "shapesize()" quando usado com
   argumentos.

      >>> 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)

   Parâmetros:
      * **stretch_wid** -- número positivo

      * **stretch_len** -- número positivo

      * **outline** -- número positivo

   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 shapes'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)

   Parâmetros:
      **shear** -- número (opcional)

   Define ou retorna o fator de shearfactor atual. Corta a forma de
   tartaruga de acordo com o fator de shearfactor fornecido, que é a
   tangente do ângulo de shearfactor. *Não* muda a direção da
   tartaruga (direção do movimento). Se o shearfactor não for
   fornecido: retorna o fator de shearfactor atual, i. Isso é. a
   tangente do ângulo de shearfactor, pelo qual as linhas paralelas à
   direção da tartaruga são cortadas.

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

turtle.tilt(angle)

   Parâmetros:
      **angle** -- um número

   Gira a forma de tartaruga em um *ângulo* a partir de seu ângulo de
   inclinação atual, mas *não* altera o rumo da tartaruga (direção do
   movimento).

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

turtle.settiltangle(angle)

   Parâmetros:
      **angle** -- um número

   Gira a forma de tartaruga para apontar na direção especificada por
   *angle*, independentemente de seu ângulo de inclinação atual. *Não*
   altera o rumo da tartaruga (direção do movimento).

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

   Obsoleto desde a versão 3.1.

turtle.tiltangle(angle=None)

   Parâmetros:
      **angle** -- um número (opcional)

   Define ou retorna o ângulo de inclinação atual. Se o ângulo for
   fornecido, gira a forma de tartaruga para apontar na direção
   especificada pelo ângulo, independentemente do seu ângulo de
   inclinação atual. *Não* muda a direção da tartaruga (direção do
   movimento). Se o ângulo não for fornecido: retorna o ângulo de
   inclinação atual, que é o ângulo entre a orientação da forma da
   tartaruga e a direção da tartaruga (sua direção de movimento).

      >>> 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)

   Parâmetros:
      * **t11** -- um número (opcional)

      * **t12** -- um número (opcional)

      * **t21** -- um número (opcional)

      * **t12** -- um número (opcional)

   Define ou retorna a matriz de transformação atual da forma da
   tartaruga.

   Se nenhum dos elementos da matriz for fornecido, retorna a matriz
   de transformação como uma tupla de 4 elementos. Caso contrário,
   define os elementos fornecidos e transforma a forma da tartaruga de
   acordo com a matriz que consiste na primeira linha t11, t12 e na
   segunda linha t21, t22. O resultado de t11 * t22 - t12 * t21 não
   deve ser zero, caso contrário será gerado um erro. Modifica
   stretchfactor, shearfactor e tiltangle de acordo com a matriz
   fornecida.

      >>> 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()

   Retorna o polígono da forma atual como uma tupla de pares de
   coordenadas. Isto pode ser usado para definir uma nova forma ou
   componentes de uma forma composta.

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


Eventos Utilizados
------------------

turtle.onclick(fun, btn=1, add=None)

   Parâmetros:
      * **fun** -- um função com dois argumento que serão chamados com
        as coordenadas do ponto clicado na tela

      * **btn** -- número do botão do mouse, o padrão é 1 (botão
        esquerdo do mouse)

      * **add** -- "True" ou "False" -- se "True", uma nova ligação
        será adicionada; caso contrário, ela substituirá uma ligação
        antiga

   Vincula *fun* a eventos de clique do mouse nessa tartaruga. Se
   *fun* for "None", as associações existentes serão removidas.
   Exemplo para a tartaruga anônima, ou seja, a forma processual:

      >>> 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)

   Parâmetros:
      * **fun** -- um função com dois argumento que serão chamados com
        as coordenadas do ponto clicado na tela

      * **btn** -- número do botão do mouse, o padrão é 1 (botão
        esquerdo do mouse)

      * **add** -- "True" ou "False" -- se "True", uma nova ligação
        será adicionada; caso contrário, ela substituirá uma ligação
        antiga

   Vincule *fun* aos eventos de liberação do botão do mouse nesta
   tartaruga.  Se *fun* for "None", as associações existentes serão
   removidas.

      >>> 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)

   Parâmetros:
      * **fun** -- um função com dois argumento que serão chamados com
        as coordenadas do ponto clicado na tela

      * **btn** -- número do botão do mouse, o padrão é 1 (botão
        esquerdo do mouse)

      * **add** -- "True" ou "False" -- se "True", uma nova ligação
        será adicionada; caso contrário, ela substituirá uma ligação
        antiga

   Vincule *fun* a eventos de movimentação do mouse nessa tartaruga.
   Se *fun* for "None", as associações existentes serão removidas.

   Observação: Cada sequência de eventos de movimento do mouse em uma
   tartaruga é precedida por um evento de clique do mouse naquela
   tartaruga.

      >>> turtle.ondrag(turtle.goto)

   Posteriormente, clicar e arrastar a Tartaruga a moverá pela tela,
   produzindo desenhos à mão (se a caneta estiver deitada).


Métodos Especiais da Tartaruga
------------------------------

turtle.begin_poly()

   Começa a registrar os vértices de um polígono.  A posição atual da
   tartaruga é o primeiro vértice do polígono.

turtle.end_poly()

   Para de registrar os vértices de um polígono. A posição atual da
   tartaruga é o último vértice do polígono. Isto será conectado ao
   primeiro vértice.

turtle.get_poly()

   Retorna o último polígono registrado.

      >>> 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()

   Cria e retorna um clone da tartaruga com a mesma posição, direção e
   propriedades da tartaruga original.

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

turtle.getturtle()
turtle.getpen()

   Retorna o próprio objeto Turtle. Uso recomendado: como função para
   retornar a "tartaruga anônima":

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

turtle.getscreen()

   Retorna o objeto "TurtleScreen" no qual a tartaruga está sendo
   desenhada. Os métodos de TurtleScreen podem então ser chamados para
   este objeto.

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

turtle.setundobuffer(size)

   Parâmetros:
      **size** -- um inteiro ou "None"

   Define ou desativa o undobuffer.  Se *size* for um inteiro, um
   undobuffer vazio de determinado tamanho será instalado.  *size*
   fornece o número máximo de ações da tartaruga que podem ser
   desfeitas pelo método/função "undo()" . Se *size* for "None", o
   undobuffer será desativado.

      >>> turtle.setundobuffer(42)

turtle.undobufferentries()

   Retorna o número de entradas no undobuffer.

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


Formas compostas
----------------

Para usar formas de tartaruga compostas, que consistem em vários
polígonos de cores diferentes, você deve usar a classe auxiliar
"Shape" explicitamente, conforme descrito abaixo:

1. Crie um objeto Shape vazio do tipo "compound".

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

   Por exemplo:

      >>> 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. Agora, adicione o Shape à lista de formas da tela e use-o:

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

Nota:

  A classe "Shape" é usada internamente pelo método "register_shape()"
  de diferentes maneiras.  O programador da aplicação precisa lidar
  com a classe Shape *somente* ao usar formas compostas como as
  mostradas acima!


métodos do TurtleScreen/Screen e as funções correspondentes
===========================================================

A maioria dos exemplos desta seção se refere a uma instância de
TurtleScreen chamada "screen".


Controle da Janela
------------------

turtle.bgcolor(*args)

   Parâmetros:
      **args** -- uma sequência de cores ou três números no intervalo
      0..colormode ou uma tupla de 3 elementos desses números

   Define ou retorna a cor de fundo do TurtleScreen.

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

turtle.bgpic(picname=None)

   Parâmetros:
      **picname** -- um string, um nome de um arquivo gif ou
      ""nopic"", ou "None"

   Configura a imagem de fundo ou retorna nome da imagem de fundo
   atual. Se *picname* for um nome de arquivo, definirá a imagem
   correspondente como plano de fundo. Se *picname* for ""nopic"",
   exclui a imagem de fundo, caso haja. Se *picname* for "None",
   retorna o nome do arquivo da imagem de fundo atual:

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

turtle.clear()

   Nota:

     Este método de TurtleScreen está disponível como uma função
     global somente sob o nome "clearscreen". A função global "clear"
     é derivada de forma diferente do método de Turtle "clear" .

turtle.clearscreen()

   Remove todos os desenhos e todas as tartarugas da TurtleScreen.
   Redefine a TurtleScreen, agora vazia, para seu estado inicial:
   fundo branco, sem imagem de fundo, sem vínculos de eventos e
   rastreamento ativado.

turtle.reset()

   Nota:

     Este método de TurtleScreen está disponível como uma função
     global somente com o nome "resetscreen". A função global "reset"
     é outra derivada do método de Turtle "reset" .

turtle.resetscreen()

   Reinicia todas as Turtles em Screen para seu estado inicial.

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

   Parâmetros:
      * **canvwidth** -- positivo inteiro, a nova largura da tela em
        pixels

      * **canvheight** -- positivo inteiro, a nova altura da tela em
        pixels

      * **bg** -- Uma string com a cor ou uma tupla, a nova cor de
        fundo

   Se nenhum argumento for fornecido, retorna o atual (canvaswidth,
   canvasheight).  Caso contrário, redimensiona a tela em que as
   tartarugas estão desenhandas.  Não altera a janela de desenho. Para
   observar as partes ocultas da tela, use as barras de rolagem. Com
   este método, é possível tornar visíveis as partes de um desenho que
   antes estavam fora da tela.

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

   Por exemplo, para procurar uma tartaruga que escapou por engano ;-)

turtle.setworldcoordinates(llx, lly, urx, ury)

   Parâmetros:
      * **llx** -- um número representando a coordenada x do canto
        inferior esquerdo da tela

      * **lly** -- um número representando a coordenada y do canto
        inferior esquerdo da tela

      * **urx** -- um número representando a coordenada x do canto
        superior direito da tela

      * **ury** -- um número representando a coordenada y do canto
        superior direito da tela

   Configura o sistema de coordenadas definido pelo usuário e muda
   para o modo "world", se necessário. Isso executa um
   "screen.reset()". Se o modo "world" já estiver ativo, todos os
   desenhos atuais serão redesenhados de acordo com as novas
   coordenadas.

   **ATENÇÃO**: em sistemas de coordenadas definidos pelo usuário, os
   ângulos podem aparecer distorcidos.

      >>> 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


Controle da animação
--------------------

turtle.delay(delay=None)

   Parâmetros:
      **delay** -- um número inteiro positivo

   Define ou retorna o *delay* do desenho em milissegundos.  (Esse é
   aproximadamente o intervalo de tempo entre duas atualizações
   consecutivas da tela). Quanto maior o atraso do desenho, mais lenta
   será a animação.

   Argumentos opcionais:

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

turtle.tracer(n=None, delay=None)

   Parâmetros:
      * **n** -- inteiro não-negativo

      * **delay** -- inteiro não-negativo

   Ative ou desative a animação da tartaruga e defina o atraso para
   atualização dos desenhos. Se *n* for fornecido, apenas cada n-ésima
   atualização regular da tela será realmente executada. (Pode ser
   usado para acelerar o desenho de gráficos complexos.) Quando
   chamado sem argumentos, retorna o valor atualmente armazenado de n.
   O segundo argumento define o valor do atraso (consulte "delay()").

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

turtle.update()

   Executa uma atualização do TurtleScreen. Para ser usado quando o
   rastreador estiver desligado.

Veja também o método RawTurtle/Turtle "speed()".


Usando os eventos de tela
-------------------------

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

   Define o foco no TurtleScreen (para coletar eventos-chave).
   Argumentos fictícios são fornecidos para que seja possível passar
   "listen()" para o método onclick.

turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key)

   Parâmetros:
      * **fun** -- uma função sem argumentos ou "None"

      * **key** -- uma string: uma tecla (por exemplo, "a") ou o nome
        de uma tecla (por exemplo, "space")

   Vincula *fun* ao evento de liberação da tecla. Se *fun* for "None",
   as ligações de eventos serão removidas. Observação: para poder
   registrar eventos-chave, o TurtleScreen deve ter o foco. (Veja o
   método "listen()".)

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

turtle.onkeypress(fun, key=None)

   Parâmetros:
      * **fun** -- uma função sem argumentos ou "None"

      * **key** -- uma string: uma tecla (por exemplo, "a") ou o nome
        de uma tecla (por exemplo, "space")

   Vincula *fun* ao evento de pressionamento de tecla se a tecla for
   fornecida, ou a qualquer evento de pressionamento de tecla se
   nenhuma tecla for fornecida. Observação: para poder registrar
   eventos-chave, o TurtleScreen deve ter foco. (Veja o método
   "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)

   Parâmetros:
      * **fun** -- um função com dois argumento que serão chamados com
        as coordenadas do ponto clicado na tela

      * **btn** -- número do botão do mouse, o padrão é 1 (botão
        esquerdo do mouse)

      * **add** -- "True" ou "False" -- se "True", uma nova ligação
        será adicionada; caso contrário, ela substituirá uma ligação
        antiga

   Vincula *fun* a eventos de clique do mouse na tela.  Se *fun* for
   "None", as associações existentes serão removidas.

   Exemplo de uma instância de TurtleScreen chamada "screen" e uma
   instância de Turtle chamada "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

   Nota:

     Este método TurtleScreen está disponível como uma função global
     somente com o nome "onscreenclick". A função global "onclick" é
     outra derivada do método de Turtle "onclick" .

turtle.ontimer(fun, t=0)

   Parâmetros:
      * **fun** -- um função sem nenhum argumento

      * **t** -- um número >= 0

   Instala um cronômetro que chama *fun* após *t* milissegundos.

      >>> 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()

   Inicia o loop de eventos - chamando a função principal do loop do
   Tkinter. Deve ser a última instrução em um programa gráfico de
   tartaruga. *Não* deve ser usado se um script for executado no IDLE
   no modo -n (sem subprocesso) - para uso interativo de gráficos de
   tartaruga.

      >>> screen.mainloop()


Métodos de entrada
------------------

turtle.textinput(title, prompt)

   Parâmetros:
      * **title** -- string

      * **prompt** -- string

   Abre uma janela de diálogo para a entrada de uma string. O
   parâmetro *title* é o título da janela de diálogo, prompt é um
   texto que descreve as informações a serem inseridas. Se a caixa de
   diálogo for preenchida, retorna a string que foi informada. Se a
   caixa de diálogo for cancelada, retorna "None".

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

turtle.numinput(title, prompt, default=None, minval=None, maxval=None)

   Parâmetros:
      * **title** -- string

      * **prompt** -- string

      * **default** -- número (opcional)

      * **minval** -- número (opcional)

      * **maxval** -- número (opcional)

   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)


Configurações e métodos especiais
---------------------------------

turtle.mode(mode=None)

   Parâmetros:
      **mode** -- uma das strings "standard", "logo" ou "world"

   Define o modo da tartaruga ("padrão", "logotipo" ou "mundo") e
   reseta a posição.  Se o modo não for fornecido, o modo atual será
   retornado.

   O modo "standard" é compatível com o antigo "turtle".  O modo
   "logo" é compatível com a maioria dos gráficos de tartaruga. O modo
   "world" usa "coordenadas mundiais" definidas pelo usuário.
   **Atenção**: nesse modo, os ângulos aparecem distorcidos se a
   proporção de "x/y" não for igual a 1.

   +--------------+---------------------------+---------------------+
   | Modo         | Título inicial da         | ângulos positivos   |
   |              | tartaruga                 |                     |
   |==============|===========================|=====================|
   | "standard"   | para a direita (east)     | counterclockwise    |
   +--------------+---------------------------+---------------------+
   | "logo"       | upward (north)            | sentido horário     |
   +--------------+---------------------------+---------------------+

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

turtle.colormode(cmode=None)

   Parâmetros:
      **cmode** -- um dos valroes 1.0 ou 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()

   Retorna a tela desse TurtleScreen.  Útil para pessoas que sabem o
   que fazer com uma tela do Tkinter.

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

turtle.getshapes()

   Retorna uma lista dos nomes de todas as formas de tartarugas
   disponíveis no momento.

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

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

   Há três maneiras diferentes de chamar essa função:

   1. *name* é o nome de um arquivo gif e *shape* é "None": Instala a
      forma de imagem correspondente:

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

      Nota:

        As formas de imagem *não* giram ao girar a tartaruga,
        portanto, elas não exibem o rumo da tartaruga!

   2. *name* é uma string arbitrária e *shape* é um tupla de pares de
      coordenadas: Instala a forma de polígono correspondente.

         >>> 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.

   Adiciona uma forma de tartaruga à lista de formas do TurtleScreen.
   Somente as formas registradas dessa forma podem ser usadas com o
   comando "shape(shapename)" .

turtle.turtles()

   Retorne uma lista de tartarugas na tela.

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

turtle.window_height()

   Retorna a altura da janela da tartaruga.

      >>> screen.window_height()
      480

turtle.window_width()

   Retorna a largura da janela da tartaruga.

      >>> screen.window_width()
      640


Métodos específico do Screen, estes métodos não são herdados do TurtleScreen
----------------------------------------------------------------------------

turtle.bye()

   Fecha a janela do gráficos de tartaruga.

turtle.exitonclick()

   Vincula o método "bye()" aos cliques do mouse na tela.

   Se o valor "using_IDLE" na configuração dicionário for "False"
   (valor padrão), entra também no loop principal. Observação: Se IDLE
   for executado com a chave "-n" (sem subprocesso), esse valor deverá
   ser definido como "True" em "turtle.cfg". Nesse caso, o loop
   principal do próprio IDLE também estará ativo para o script do
   cliente.

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

   Define o tamanho e a posição da janela principal. Os valores
   padrões dos argumentos são armazenados na configuração dicionário e
   podem ser alterados por meio de um arquivo "turtle.cfg".

   Parâmetros:
      * **width** -- se for um inteiro, o tamanho em pixels; se for um
        float, uma fração da tela; o padrão é 50% da tela

      * **height** -- se for um inteiro, a altura em pixels; se for um
        float, uma fração da tela; o padrão é 75% da tela

      * **startx** -- se positivo, este parâmetro define a posição
        inicial em pixels a partir da borda esquerda da tela; se
        negativo, define a partir da borda direita; se "None",
        centraliza a janela horizontalmente

      * **starty** -- se positivo, este parâmetro define a posição
        inicial, em pixels, a partir da borda superior da tela; se
        negativo, define a partir da borda inferior; se for "None",
        centraliza a janela verticalmente

      >>> 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)

   Parâmetros:
      **titlestring** -- uma string que é exibida na barra de título
      da janela de gráficos da tartaruga

   Define o título da janela da tartaruga como *titlestring*.

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


Classes Públicas
================

class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas)

   Parâmetros:
      **canvas** -- a "tkinter.Canvas", a "ScrolledCanvas" or a
      "TurtleScreen"

   Cria uma tartaruga.  A tartaruga tem todos os métodos descritos
   acima como "métodos de Turtle/RawTurtle".

class turtle.Turtle

   Subclasse do RawTurtle, tem a mesma interface, mas desenha em um
   objeto padrão "Screen", que é criado automaticamente, quando
   necessário, pela primeira vez.

class turtle.TurtleScreen(cv)

   Parâmetros:
      **cv** -- uma "tkinter.Canvas"

   Provides screen oriented methods like "setbg()" etc. that are
   described above.

class turtle.Screen

   Subclasse do TurtleScreen, com quatro métodos adicionados.

class turtle.ScrolledCanvas(master)

   Parâmetros:
      **master** -- algum widget do Tkinter para conter o
      ScrolledCanvas. Exemplo: um Tkinter-canvas com barras de rolagem
      adicionadas

   Usado pela classe Screen, que, portanto, fornece automaticamente um
   ScrolledCanvas como playground para as tartarugas.

class turtle.Shape(type_, data)

   Parâmetros:
      **type_** -- uma das strings "polygon", "image", "compound"

   Estrutura de dados para modelar a forma.  O par "(type_, data)"
   deve seguir essa especificação:

   +-------------+------------------------------------------------------------+
   | *type_*     | *data*                                                     |
   |=============|============================================================|
   | "polygon"   | Uma tupla com o par de coordenadas do polígono             |
   +-------------+------------------------------------------------------------+
   | "image"     | uma imagem (nesse formato, usada apenas internamente!)     |
   +-------------+------------------------------------------------------------+
   | "compound"  | "None" (uma forma composta deve ser construída usando o    |
   |             | método "addcomponent()")                                   |
   +-------------+------------------------------------------------------------+

   addcomponent(poly, fill, outline=None)

      Parâmetros:
         * **poly** -- um polígono, ou seja, um tupla de pares de
           números

         * **fill** -- uma cor com a qual o *poly* será preenchido

         * **outline** -- uma cor para o contorno do polígono (se
           fornecido)

      Exemplo:

         >>> 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()

      Veja Formas compostas.

class turtle.Vec2D(x, y)

   Uma classe de vetor bidimensional, usada como classe auxiliar para
   implementar gráficos de tartaruga. Pode ser útil também para
   programas de gráficos de tartaruga.  Derivado de uma tupla,
   portanto, um vetor é um tupla!

   Fornece (para vetores *a*, *b*, número *k*):

   * "a + b" vetor adicional

   * "a - b" subtração de vetor

   * "a * b" produto interno

   * "k * a" e "a * k" multiplicação com escalar

   * "abs(a)" valor absoluto de um

   * rotação "a.rotate(angle)"


Ajuda e Configuração
====================


Como usar a Ajuda
-----------------

Os métodos públicos das classes Screen e Turtle estão amplamente
documentado por meio de docstrings. Eles podem ser usados como ajuda
on-line por meio dos recursos de ajuda do Python:

* Ao usar o IDLE, as dicas de ferramentas mostram as assinaturas e as
  primeiras linhas das docstrings das chamadas de função/método
  digitadas.

* Chamar "help()" em métodos ou funções exibe o seguinte docstring:

     >>> 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()

* Os docstrings de funções que são derivados do métodos têm um formato
  diferente:

     >>> 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()

Esses docstrings modificados são criados automaticamente junto com as
definições de função que são derivadas de métodos ao importar.


Tradução de docstrings em diferentes idiomas
--------------------------------------------

Há um utilitário para criar a dicionário cujas chaves são os nomes de
método e cujos valores são os docstrings dos métodos públicos das
classes Screen e Turtle.

turtle.write_docstringdict(filename="turtle_docstringdict")

   Parâmetros:
      **filename** -- uma string, usado como nome de arquivo

   Cria e escreve um dicionário de docstring em um script Python com o
   nome de arquivo fornecido. Esta função deve ser chamada
   explicitamente (ela não é usada pelas classes gráficas da
   tartaruga). O dicionário docstring será gravado no script Python
   "*filename*.py". O objetivo é servir como modelo para traduzir os
   documentos para diferentes idiomas.

Se você (ou seus alunos) quiserem usar o "turtle" com a ajuda on-line
em seu idioma nativo, será necessário traduzir os docstrings e salvar
o arquivo resultante como, por exemplo,
"turtle_docstringdict_german.py".

Se você tiver uma entrada específica em seu arquivo "turtle.cfg", esse
dicionário será lido no momento do importar e substituirá as
documentações originais em inglês.

No momento da redação deste texto, há docstring dicionários em alemão
e italiano. (Pedidos devem ser enviados para glingl@aon.at.)


Como configurar Screen and Turtles
----------------------------------

A configuração padrão integrada imita a aparência e o comportamento do
antigo módulo Turtle para manter a melhor compatibilidade possível com
ele.

Se quiser usar uma configuração diferente que reflita melhor o recurso
deste módulo ou que se adapte melhor às suas necessidades, por
exemplo, para uso em uma sala de aula, você pode criar um arquivo de
configuração "turtle.cfg" que será lido no momento de importar e
modifica a configuração de acordo com suas definições.

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

Breve explicação das entradas selecionadas:

* 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* pode ser qualquer uma das formas pré-definidas, como por
  exemplo: seta, tartaruga, etc. Para obter mais informações, consulte
  "help(shape)".

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

* Se você quiser refletir o estado da tartaruga, você deve usar
  "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".

* As entradas *exampleturtle* e *examplescreen* definem os nomes
  desses objetos conforme ocorrem nas docstrings. A transformação de
  "método-docstrings" para "função-docstrings" excluirá esses nomes
  dos 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.

Pode haver um arquivo "turtle.cfg" no diretório em que o "turtle" está
armazenado e um arquivo adicional no diretório de trabalho atual. O
arquivo armazenado no diretório de trabalho atual tem preferência e
vai substituir as configurações do primeiro.

O diretório "Lib/turtledemo" contém um arquivo chamado "turtle.cfg".
Você pode usá-lo como um exemplo e ver seus efeitos ao executar as
demonstrações (de preferência, não utilize visualizador de
demonstrações).


"turtledemo" --- Scripts de Demonstração
========================================

O pacote "turtledemo" inclui um conjunto de scripts de demonstração.
Esses scripts podem ser executados e visualizados usando o
visualizador de demonstração fornecido da seguinte forma:

   python -m turtledemo

Como alternativa, você pode executar os scripts de demonstração
individualmente.  Por exemplo,

   python -m turtledemo.bytedesign

O diretório do pacote "turtledemo" contém:

* Um arquivo de exemplo "__main__.py" que pode ser usado para
  visualizar o código-fonte dos scripts e executá-los ao mesmo tempo.

* Vários scripts que demonstram diferentes recursos do módulo
  "turtle".  Os exemplos podem ser acessados no menu Exemplos. Eles
  também podem ser executados de forma isolada.

* Um arquivo "turtle.cfg" que serve como exemplo de como escrever e
  usar esse tipo de arquivos.

Os scripts de demonstração são:

+------------------+--------------------------------+-------------------------+
| Nome             | Descrição                      | Recursos                |
|==================|================================|=========================|
| bytedesign       | Padrão de gráficos de          | "tracer()", delay,      |
|                  | tartaruga clássico complexo    | "update()"              |
+------------------+--------------------------------+-------------------------+
| chaos            | gráficos do modelo de          | coordenadas mundiais    |
|                  | Verhulst, mostram que os       |                         |
|                  | cálculos do computador podem   |                         |
|                  | gerar resultados às vezes      |                         |
|                  | contra as expectativas do bom  |                         |
|                  | senso                          |                         |
+------------------+--------------------------------+-------------------------+
| relógio          | Relógio analógico que mostra o | tartarugas como as mãos |
|                  | horário do seu computador      | do relógio, ontimer     |
+------------------+--------------------------------+-------------------------+
| colormixer       | experimento com r, g, b        | "ondrag()"              |
+------------------+--------------------------------+-------------------------+
| forest           | 3 breadth-first trees          | randomization           |
+------------------+--------------------------------+-------------------------+
| fractalcurves    | Curvas de Hilbert & Koch       | recursão                |
+------------------+--------------------------------+-------------------------+
| lindenmayer      | ethnomathematics (indian       | L-System                |
|                  | kolams)                        |                         |
+------------------+--------------------------------+-------------------------+
| minimal_hanoi    | Torres de Hanoi                | Tartarugas retângulos   |
|                  |                                | como discos de Hanói    |
|                  |                                | (shape, shapesize)      |
+------------------+--------------------------------+-------------------------+
| nim              | jogue o clássico jogo nim com  | tartarugas como         |
|                  | três montes de gravetos contra | gravetos, acionadas por |
|                  | o computador.                  | eventos (mouse,         |
|                  |                                | teclado)                |
+------------------+--------------------------------+-------------------------+
| paint            | programa de desenho super      | "onclick()"             |
|                  | minimalista                    |                         |
+------------------+--------------------------------+-------------------------+
| peça             | elementar                      | tartaruga: aparência e  |
|                  |                                | animação                |
+------------------+--------------------------------+-------------------------+
| penrose          | ladrilhos irregulares com      | "stamp()"               |
|                  | pipas e dardos                 |                         |
+------------------+--------------------------------+-------------------------+
| planet_and_moon  | simulação do sistema           | formas compostas,       |
|                  | gravitacional                  | "Vec2D"                 |
+------------------+--------------------------------+-------------------------+
| round_dance      | tartarugas dançantes girando   | formas compostas,       |
|                  | em pares na direção oposta     | clonar o shapesize,     |
|                  |                                | inclinação,             |
|                  |                                | get_shapepoly,          |
|                  |                                | atualizar               |
+------------------+--------------------------------+-------------------------+
| sorting_animate  | demonstração visual de         | alinhamento simples,    |
|                  | diferentes tipos de métodos de | randomização            |
|                  | ordenação                      |                         |
+------------------+--------------------------------+-------------------------+
| tree             | uma árvore (gráfica) da        | "clone()"               |
|                  | largura inicial (usando        |                         |
|                  | geradores)                     |                         |
+------------------+--------------------------------+-------------------------+
| two_canvases     | desenho simples                | tartarugas em duas      |
|                  |                                | telas                   |
+------------------+--------------------------------+-------------------------+
| wikipedia        | um padrão do artigo Wikipédia  | "clone()", "undo()"     |
|                  | sobre gráficos de tartaruga    |                         |
+------------------+--------------------------------+-------------------------+
| yinyang          | outro exemplo elementar        | "circle()"              |
+------------------+--------------------------------+-------------------------+

Diverta-se!


Modificações desde a versão do 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.


Modificações desde a versão do Python 3.0
=========================================

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

* The method "Screen.onkeypress()" has been added as a complement to
  "Screen.onkey()" which in fact binds actions to the keyrelease
  event. Accordingly the latter has got an alias:
  "Screen.onkeyrelease()".

* The method  "Screen.mainloop()" has been added. So when working only
  with Screen and Turtle objects one must not additionally import
  "mainloop()" anymore.

* Two input methods has been added "Screen.textinput()" and
  "Screen.numinput()". These popup input dialogs and return strings
  and numbers respectively.

* Dois scripts de exemplo "tdemo_nim.py" e "tdemo_round_dance.py"
  foram adicionados ao diretório "Lib/turtledemo".
