Martin v. Löwis | 8718459 | 2008-06-04 06:29:55 +0000 | [diff] [blame] | 1 | |
| 2 | ======================================================== |
| 3 | A new turtle module for Python |
| 4 | ======================================================== |
| 5 | |
| 6 | Turtle graphics is a popular way for introducing programming to |
| 7 | kids. It was part of the original Logo programming language developed |
| 8 | by Wally Feurzig and Seymour Papert in 1966. |
| 9 | |
| 10 | Imagine a robotic turtle starting at (0, 0) in the x-y plane. Give it |
| 11 | the command turtle.forward(15), and it moves (on-screen!) 15 pixels in |
| 12 | the direction it is facing, drawing a line as it moves. Give it the |
| 13 | command turtle.left(25), and it rotates in-place 25 degrees clockwise. |
| 14 | |
| 15 | By combining together these and similar commands, intricate shapes and |
| 16 | pictures can easily be drawn. |
| 17 | |
| 18 | ----- turtle.py |
| 19 | |
| 20 | This module is an extended reimplementation of turtle.py from the |
| 21 | Python standard distribution up to Python 2.5. (See: http:\\www.python.org) |
| 22 | |
| 23 | It tries to keep the merits of turtle.py and to be (nearly) 100% |
| 24 | compatible with it. This means in the first place to enable the |
| 25 | learning programmer to use all the commands, classes and methods |
| 26 | interactively when using the module from within IDLE run with |
| 27 | the -n switch. |
| 28 | |
| 29 | Roughly it has the following features added: |
| 30 | |
| 31 | - Better animation of the turtle movements, especially of turning the |
| 32 | turtle. So the turtles can more easily be used as a visual feedback |
| 33 | instrument by the (beginning) programmer. |
| 34 | |
| 35 | - Different turtle shapes, gif-images as turtle shapes, user defined |
| 36 | and user controllable turtle shapes, among them compound |
| 37 | (multicolored) shapes. Turtle shapes can be stgretched and tilted, which |
| 38 | makes turtles zu very versatile geometrical objects. |
| 39 | |
| 40 | - Fine control over turtle movement and screen updates via delay(), |
| 41 | and enhanced tracer() and speed() methods. |
| 42 | |
| 43 | - Aliases for the most commonly used commands, like fd for forward etc., |
| 44 | following the early Logo traditions. This reduces the boring work of |
| 45 | typing long sequences of commands, which often occur in a natural way |
| 46 | when kids try to program fancy pictures on their first encounter with |
| 47 | turtle graphcis. |
| 48 | |
| 49 | - Turtles now have an undo()-method with configurable undo-buffer. |
| 50 | |
| 51 | - Some simple commands/methods for creating event driven programs |
| 52 | (mouse-, key-, timer-events). Especially useful for programming games. |
| 53 | |
| 54 | - A scrollable Canvas class. The default scrollable Canvas can be |
| 55 | extended interactively as needed while playing around with the turtle(s). |
| 56 | |
| 57 | - A TurtleScreen class with methods controlling background color or |
| 58 | background image, window and canvas size and other properties of the |
| 59 | TurtleScreen. |
| 60 | |
| 61 | - There is a method, setworldcoordinates(), to install a user defined |
| 62 | coordinate-system for the TurtleScreen. |
| 63 | |
| 64 | - The implementation uses a 2-vector class named Vec2D, derived from tuple. |
| 65 | This class is public, so it can be imported by the application programmer, |
| 66 | which makes certain types of computations very natural and compact. |
| 67 | |
| 68 | - Appearance of the TurtleScreen and the Turtles at startup/import can be |
| 69 | configured by means of a turtle.cfg configuration file. |
| 70 | The default configuration mimics the appearance of the old turtle module. |
| 71 | |
| 72 | - If configured appropriately the module reads in docstrings from a docstring |
| 73 | dictionary in some different language, supplied separately and replaces |
| 74 | the english ones by those read in. There is a utility function |
| 75 | write_docstringdict() to write a dictionary with the original (english) |
| 76 | docstrings to disc, so it can serve as a template for translations. |
| 77 | |