gh-106996: Add the basics of a turtle graphics tutorial (#107072)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
This commit is contained in:
Daniele Procida 2023-07-23 11:43:27 +02:00 committed by GitHub
parent 102a773716
commit a2a0e51400
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 136 additions and 28 deletions

View file

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

View file

@ -24,19 +24,6 @@ introduced in Logo <https://en.wikipedia.org/wiki/Turtle_
(robot)>`_, developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon
in 1967.
In Python, turtle graphics provides a representation of a physical "turtle"
(a little robot with a pen) that draws on a sheet of paper on the floor.
It's an effective and well-proven way for learners to encounter
programming concepts and interaction with software, as it provides instant,
visible feedback. It also provides convenient access to graphical output
in general.
Turtle drawing was originally created as an educational tool, to be used by
teachers in the classroom. For the programmer who needs to produce some
graphical output it can be a way to do that without the overhead of
introducing more complex or external libraries into their work.
Get started
===========
@ -54,10 +41,141 @@ direction it is facing, drawing a line as it moves. Give it the command
.. image:: turtle-star.*
:align: center
.. literalinclude:: ../includes/turtle-star.py
In Python, turtle graphics provides a representation of a physical "turtle"
(a little robot with a pen) that draws on a sheet of paper on the floor.
By combining together these and similar commands, intricate shapes and pictures
can easily be drawn.
It's an effective and well-proven way for learners to encounter
programming concepts and interaction with software, as it provides instant,
visible feedback. It also provides convenient access to graphical output
in general.
Turtle drawing was originally created as an educational tool, to be used by
teachers in the classroom. For the programmer who needs to produce some
graphical output it can be a way to do that without the overhead of
introducing more complex or external libraries into their work.
Tutorial
========
New users should start here. In this tutorial we'll explore some of the
basics of turtle drawing.
Starting a turtle environment
-----------------------------
In a Python shell, import all the objects of the ``turtle`` module::
from turtle import *
If you run into a ``No module named '_tkinter'`` error, you'll have to
install the :mod:`Tk interface package <tkinter>` on your system.
Basic drawing
-------------
Send the turtle forward 100 steps::
forward(100)
You should see (most likely, in a new window on your display) a line
drawn by the turtle, heading East. Change the direction of the turtle,
so that it turns 120 degrees left (anti-clockwise)::
left(120)
Let's continue by drawing a triangle::
forward(100)
left(120)
forward(100)
Notice how the turtle, represented by an arrow, points in different
directions as you steer it.
Experiment with those commands, and also with ``backward()`` and
``right()``.
Pen control
~~~~~~~~~~~
Try changing the color - for example, ``color('blue')`` - and
width of the line - for example, ``width(3)`` - and then drawing again.
You can also move the turtle around without drawing, by lifting up the pen:
``up()`` before moving. To start drawing again, use ``down()``.
The turtle's position
~~~~~~~~~~~~~~~~~~~~~
Send your turtle back to its starting-point (useful if it has disappeared
off-screen)::
home()
The home position is at the center of the turtle's screen. If you ever need to
know them, get the turtle's x-y co-ordinates with::
pos()
Home is at ``(0, 0)``.
And after a while, it will probably help to clear the window so we can start
anew::
clearscreen()
Making algorithmic patterns
---------------------------
Using loops, it's possible to build up geometric patterns::
for steps in range(100):
for c in ('blue', 'red', 'green'):
color(c)
forward(steps)
right(30)
\ - which of course, are limited only by the imagination!
Let's draw the star shape at the top of this page. We want red lines,
filled in with yellow::
color('red')
fillcolor('yellow')
Just as ``up()`` and ``down()`` determine whether lines will be drawn,
filling can be turned on and off::
begin_fill()
Next we'll create a loop::
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
``abs(pos()) < 1`` is a good way to know when the turtle is back at its
home position.
Finally, complete the filling::
end_fill()
(Note that filling only actually takes place when you give the
``end_fill()`` command.)
Explanation
===========
The :mod:`turtle` module is an extended reimplementation of the same-named
module from the Python standard distribution up to version Python 2.5.
@ -112,8 +230,8 @@ To use multiple turtles on a screen one has to use the object-oriented interface
omitted here.
Overview of available Turtle and Screen methods
=================================================
Turtle graphics reference
=========================
Turtle methods
--------------