Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/source/turtleart.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'source/turtleart.markdown')
-rw-r--r--source/turtleart.markdown569
1 files changed, 0 insertions, 569 deletions
diff --git a/source/turtleart.markdown b/source/turtleart.markdown
deleted file mode 100644
index 7be06c2..0000000
--- a/source/turtleart.markdown
+++ /dev/null
@@ -1,569 +0,0 @@
-% Turtle Art
-%
-%
-
-About
-=====
-
-Turtle Art, also known as Turtle Blocks, is an activity with a
-Logo-inspired graphical "turtle" that draws colorful art based on
-snap-together visual programming elements. Its "low floor" provides an
-easy entry point for beginners. It also has "high ceiling" programming,
-graphics, mathematics, and Computer Science features which will
-challenge the more adventurous student.
-
-Where to get Turtle Art
-=======================
-
-Is included in the OLPC image, and can be downloaded from the [Sugarlabs
-Activities
-repository](http://activities.sugarlabs.org/en-US/sugar/addon/4027)
-
-Using Turtle Art
-================
-
-Start by clicking on (or dragging) blocks from the Turtle palette. Use
-multiple blocks to create drawings; as the turtle moves under your
-control, colorful lines are drawn.
-
-You add blocks to your program by clicking on or dragging them from the
-palette to the main area. You can delete a block by dragging it back
-onto the palette. Click anywhere on a "stack" of blocks to start
-executing that stack or by clicking in the Rabbit (fast) , Turtle (slow)
-or Bug (debug) buttons ![rabit-turtle](images/80px-Rabbitturtle.jpg) on
-the Project Toolbar.
-
-Toolbars
-========
-
-Main Toolbar
-------------
-
-From left to right:
-
-- Activity toolbar (includes sharing; saving/loading options);
-- Edit toolbar (including copy and paste);
-- View toolbar (including full-screen, coordinate overlays; turtle
- status, etc.);
-- Palette toolbar (including all programming blocks);
-- erase canvas;
-- run project fast (rabbit);
-- run project slow (snail);
-- stop project;
-- save a snapshot (save a copy of the current state of the project);
-- load examples;
-- display help palette;
-- stop activity
-
-Keyboard short cuts for the above: Alt+ palette; blocks; run; walk;
-stop; erase; e.g., Alt+e will erase the screen. Esc will return from
-full-screen mode.
-
-**Notes:** The run buttons are tied to the Start Block. If no Start
-Block is used, then all blocks are run when either run button is
-clicked. The "rabbit" button runs the blocks at maximum speed. The
-"snail" button pauses and displays the turtle and block values between
-each step.
-
-On older versions of Sugar (e.g., 0.84), the main toolbar will look like
-this:
-
-Project Toolbar
----------------
-
-From left to right:
-
-- Project title;
-- Write to Journal (on newer versions of Sugar)
-- Keep button (not shown; only appears on older Sugar systems)
-- Share button;
-- Share blocks; shown in disable state. Used to share stacks of blocks
- between collaborators.
-- Save as image;
-- Save as Logo;
-- Load a previously saved project from the Sugar Journal;
-- Load Python code into a programmable block
-
-**Notes:**
-: - On older Sugar systems, these controls appear on the
- Import/Export toolbar.
-
- - On smaller screens, the load/save buttons are shown on a
- palette.
- - To share a stack, click on the share button. The cursor will
- change to the hand shape Ta-hand-cursor.png. Place the cursor on
- any block or stack of blocks and click. The blocks will be
- shared and the cursor will change back to the arrow shape.
-
-Edit Toolbar
-------------
-
-The Edit toolbar is used to copy stacks of blocks to the clipboard and
-to paste stacks from the clipboard. To copy a stack, click on the copy
-button or type Ctrl-c. The cursor will change to the hand shape
-Ta-hand-cursor.png. Place the cursor on any block or stack of blocks and
-click. The blocks will be copied to the Sugar clipboard and the cursor
-will change back to the arrow shape. To paste from the clipboard, type
-Ctrl-v or click the paste button.
-
-From left to right:
-
-- Copy
-- Paste
-
-View Toolbar
-------------
-
-From left to right:
-
-- Full-screen button;
-- Cartesian-coordinate grid;
-- polar-coordinate grid;
-- not shown: centimeter-coordinate grid (XO-only);
-- display of x,y coordinates, heading of turtle;
-- Rescale-coordinates button;
-- Grow block size;
-- Shrink block size
-- Disable/enable hover help
-
-Palettes Toolbar
-----------------
-
-The palette menus are revealed by clicking on the Block icon on the main
-toolbar. (On older Sugar systems, select the Projects toolbar. When
-running Turtle Art from GNOME, the palettes are visible by default.)
-
-There are ten palettes of program elements available for program
-construction: Turtle movements; Pen attributes; Color attributes;
-Numeric operators; Logical operators; Logical blocks; Sensor blocks;
-Media blocks; Customization functions; and Presentation blocks. An
-eleventh palette is used for restoring blocks from the trash.
-
-**Note:** Additional palettes may be loaded by plugin extensions to
-Turtle Blocks.
-
-Blocks are dragged from the palette onto the canvas surface. To dispose
-of a block, drag it back onto the palette. (It will be placed onto the
-trash palette.)
-
-The ![Showblocks](images/55px-Show-blocks.svg.png) button, which
-replaces the Stop button on the main toolbar while the program is
-executing, is used to reveal the program blocks. Individual palettes can
-be hidden by clicking on their highlighted tab.
-
-Turtle Palette
---------------
-
-These blocks are used to control the movements of the turtle.
-
-- forward: move turtle forward
-- back: move turtle backward
-- clean: clear the screen and position the turtle in the center of the
- screen, pen down, color red, heading 0
-- left: rotate turtle counterclockwise
-- right: rotate turtle clockwise
-- arc: move turtle along an arc
-- set xy: set turtle x,y position (0,0) is the center of the screen
-- seth: set turtle heading
-- xcor: holds current x-coordinate value of the turtle (can be used in
- place of a number block)
-- ycor: holds current y-coordinate value of the turtle (can be used in
- place of a number block)
-- heading: holds current heading value of the turtle (can be used in
- place of a number block)
-
-Pen Palette
------------
-
-These blocks are used to control the attributes of the turtle's pen.
-
-- pen up: turtle will not draw when moved
-- pen down: turtle will draw when moved
-- set pen size: sets the width of the line drawn by the turtle
-- fill screen: fill the screen with a color/shade and reposition the
- turtle in the center of the screen
-- pen size: width of the line drawn by the turtle (can be used in
- place of a number block)
-- set color: sets the pen color
-- set shade: sets the pen shade
-- set gray: sets the gray-level of the pen (Only available in Turtle
- Blocks)
-- color: current pen color (can be used in place of a number block)
-- shade: current pen shade (can be used in place of a number block)
-- gray: current pen gray level (can be used in place of a number
- block) (Only available in Turtle Blocks)
-- start fill: starts a filled polygon (straight sides, not arcs)
-- end fill: ends a fill polygon (straight sides, not arcs)
-
-Color Palette
--------------
-
-These blocks can be used with the set-pen-color block in place of a
-number block.
-
-Numbers Palette
----------------
-
-These blocks are arithmetic and boolean operators.
-
-- addition: adds two numeric inputs (also can be used to concatenate
- strings)
-- subtraction: subtracts the bottom numeric input from the top input
-- multiplication: multiplies two numeric inputs
-- division: divided top input (numerator) by bottom input
- (denominator)
-- identity: identity function (used for spacing blocks)
-- modulo (remainder): calculates remainder when dividing top input by
- the bottom input
-- square root (Only available with Turtle Blocks)
-- random number: generates a random integer between the minimum and
- maximum values
-- number block: a numeric input
-- greater than: boolean greater than operator (used with flow blocks)
-- less than: boolean less than operator (used with flow blocks)
-- equal to: boolean equal to operator (used with flow blocks)
-- not: boolean not (Only available with Turtle Blocks)
-- and: boolean and (Only available with Turtle Blocks)
-- or: boolean or (Only available with Turtle Blocks)
-
-Flow Palette
-------------
-
-These blocks control program flow.
-
-- wait: pause program execution (unit is seconds)
-- forever: continuously repeat execute stack under the right flow
-- repeat: repeat the execution of stack under the right flow a
- specified number of times
-- if/then: conditional execution of the stack under the right flow
- (uses boolean operators found on the Number palette)
-- if/then/else: conditional execution of the stack under the center
- and right flows (uses boolean operators found on the Number palette)
-- vertical spacer
-- stop stack: interrupt execution
-- while: execute stack under right flow while the condition is true
- (uses boolean operators found on the Number palette) (Only available
- with Turtle Blocks)
-- until: execute stack under right flow until the condition is true
- (uses boolean operators found on the Number palette) (Only available
- with Turtle Blocks)
-
-**Note:** Nesting while and/or until blocks is not always reliable. If
-you encounter an error, try putting the nested block in a separate
-stack, accessed with an action block.
-
-Blocks Palette
---------------
-
-These blocks are for defining variables and subroutines.
-
-- start: connects action to toolbar 'Run' button
-- store in box 1: store a number, string, or media object in box 1
- (Only available with Turtle Blocks)
-- store in box 2: store a number, string, or media object in box 2
- (Only available with Turtle Blocks)
-- text: string input
-- box 1: current value of box 1 (can be used in place of a number
- block) (Only available with Turtle Blocks)
-- box 2: current value of box 2 (can be used in place of a number
- block) (Only available with Turtle Blocks)
-- box: current value of named box (can be used in place of a number
- block)
-- store in: store a number, string, or media object in a named box
-- action: top of named action stack
-- action 1: top of action 1 stack (Only available with Turtle Blocks)
-- action 2: top of action 2 stack (Only available with Turtle Blocks)
-- action: execute named action stack
-- action 2: execute action 2 stack (Only available with Turtle Blocks)
-- action 1: execute action 1 stack (Only available with Turtle Blocks)
-
-**Note:** When a named action or named box block are used, new blocks
-appear on the palette that correspond to these names; e.g., if a top of
-action stack is rename, "to square", an action block, "to square" is
-added to the palette.
-
-Sensors Palette
----------------
-
-- query keyboard: check for keyboard input (results are stored in the
- keyboard block)
-- keyboard: current value of keyboard input (can be used in place of a
- number block)
-- read pixel: push the RGB value of the pixel under the turtle onto
- the FILO (blue is first, red is last)
-- turtle sees: the "palette color" of the pixel under the turtle
-- time: number of seconds since program began
-- sound: raw data from microphone ranging -32000 to 32000
-- volume (loudness): ranging 0 to 32000
-- pitch: the resolution is +-8Hz
-- brightness: average luminance seen through camera
-- camera: grab image from camera
-- button down: current state of the mouse button (1 == down; 0 == ip)
-- mouse x: x position of mouse
-- mouse y: y position of mouse
-
-The OLPC XO can measure external inputs with its microphone jack:
-
-- resistance: measurement range is 750 to 14k ohms, (OLPC XO1) and 2k
- ohms to open circuit (OLPC XO1.5)
-- voltage: measurement range is DC 0.4V to 1.85V. (OLPC XO1) and 0.17V
- to 3.0V (OLPC XO1.5)
-
-The OLPC XO 1.75 also includes an accelerometer.
-
-- accelerate (not shown): measure the acceleration of the computer.
- Results are pushed to the stack and can be retrieved by using 3
- 'pop' blocks (one for X (horizontal), one for Y (vertical), and one
- for Z (forward/backward))
-
-See [Using Turtle Art
-Sensors](http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Using_Turtle_Art_Sensors)
-for more details about the sensor blocks.
-
-Media Palette
--------------
-
-These are a collection of blocks used for displaying media objects, such
-as images from the Journal.
-
-- journal: Sugar Journal media object (used with show block) (also
- available in Turtle Art)
-- audio: Sugar Journal media object (used with show block)
-- video: Sugar Journal media object (used with show block)
-- description: Sugar Journal description field (used with show block)
-- text: text string (used with show block; also used with box and
- action blocks)
-- show: draw text or display media object from the Journal
-- set scale: sets the scale of images displayed with show block
-- save picture: save the canvas to the Sugar Journal as a .png image
- (note: saves the canvas as displayed)
-- save SVG: save turtle graphics to the Sugar Journal as a .svg image
- (note: only saves the changes to the canvas in the current execution
- run)
-- scale: sets scale for show block (100% is full-screen)
-- wait for media: used to pause program while audio or video file
- plays
-- media stop: stop current sound or video
-- media pause: pause current sound or video
-- media resume: resume playing paused media
-- speak: sends text to the voice synthesizer
-- sine wave: plays a sine wave of a given frequency, amplitude, and
- duration
-
-Extras Palette
---------------
-
-These are a collection of extra blocks for accessing advanced features
-only available in Turtle Blocks.
-
-- push: push value onto FILO (first-in last-out) heap
-- show heap: show FILO in status block
-- empty heap: empty the FILO
-- pop: pop value off of the FILO (can be used in place of a number
- block)
-- print: print value in status block (also available in Turtle Art)
-- comment: program comment (displayed in "walk" mode)
-- chr: Python chr primitive: converts ASCII to character (useful for
- converting keyboard input to text)
-- int: Python int primitive: converts input to integers
-- Python: a programmable block (can be used in place of a number
- block)
-
- > add your own math equation in the block, e.g., sin(x); This block
- > is expandable to support up to three variables, e.g. f(x,y,z)
-
-- Import Python: import Python code from the Sugar Journal (a more
- general-purpose programmable block). This block accepts a single
- variable x, as an input or up to 3 variables as an array x[0], x[1]
- and x[2]
-- Cartesian: display Cartesian coordinate grid overlay
-- polar: display polar coordinate grid overlay
-- turtle: specify which turtle is active
-- turtle shell: import a image from the Journal to use as the turtle's
- 'shell', i.e., replace the turtle with a sprite.
-- sandwich clamp: "clamp" a stack of blocks to hide
-
-Portfolio Palette
------------------
-
-These blocks are used to make multimedia presentations only available in
-Turtle Blocks.
-
-- hide blocks: hides all blocks and palettes (useful for decluttering
- the screen during presentations) (also available in Turtle Art)
-- show blocks: shows blocks and palettes (useful for resuming
- programming after a presentation)
-- full screen: goes into full-screen mode (hides Sugar toolbars)
-- list slide: used for bulleted lists; This block is expandable,
- allowing you to add as many bullets as you need
-- picture slides: used for picture slides (1×1, 2×2, 1×2, and 2×1)
-
-Only available in Turtle Blocks:
-
-- left: holds current x-coordinate value of the left edge of the
- screen (can be used in place of a number block)
-- top: holds current y-coordinate value of the top edge of the screen
- (can be used in place of a number block)
-- right: holds current x-coordinate value of the right edge of the
- screen (can be used in place of a number block)
-- bottom: holds current y-coordinate value of the bottom edge of the
- screen (can be used in place of a number block)
-- width: screen width (can be used in place of a number block)
-- height: screen height (can be used in place of a number block)
-
-**Note:** The slide blocks expand into stacks that can be edited for
-customized presentations.
-
-Trash Palette
--------------
-
-This palette holds any blocks that have been put in the trash. You can
-drag blocks out of the trash to restore them. The trash palette is
-emptied when you quit Turtle Art.
-
-Vertical palettes
------------------
-
-Learning with Turtle Art
-========================
-
-Tony Forster and Mokurai have created a number of Activities/Turtle
-Art/Tutorials Turtle Art Tutorials on a wide range of math, programming,
-art, and Computer Science topics. There is also a substantial literature
-of educational materials using the Logo programming language, from which
-Turtle Art and Turtle Blocks derive. The Exploring with Logo series from
-MIT Press is particularly recommended for showing how far beyond simple
-graphics Logo can go. Mokurai recommends starting with his first three,
-specifically designed for helping beginners of all ages, starting with
-the preliterate in preschool.
-
-- [You be the
- Turtle](http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Tutorials/You_be_the_Turtle)
- without the computer.
-- [Mathematics and
- art](http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Tutorials/Mathematics_and_art),
- an introduction to TA.
-- [Counting](http://wiki.sugarlabs.org/go/Activities/Turtle_Art/Tutorials/Counting)
-
-Extending Turtle Art
-====================
-
-There are versions of Turtle Art in several programming languages and
-environments, including Logo, Python, Smalltalk, and others. Turtle Art
-can export programs in Logo, as explained below. There are programmable
-blocks in Turtle Art which make it possible to include any Python
-program within the Turtle Art world. The simplest case is a single
-function call used in a graphing program, but there is no inherent limit
-on what capabilities of Python one can add to TA.
-
-Exporting to Berkeley Logo
-==========================
-
-Turtle Art can export its projects to [Berkeley
-Logo](http://www.cs.berkeley.edu/~bh/) (using either **View Source** or
-the **Save as Logo** button on the **Project Toolbar**)
-
-Python Blocks in Turtle Art
-===========================
-
-There are two ways to create Python blocks: by loading sample code
-provided with Turtle Art or by loading Python code the your Journal.
-
-**Loading sample code**
-
-A number of individual sample programs are provided. Clicking on the
-Load Python Block button on the Load/Save Toolbar
-![loadpython](images/Loadpythonsamples.jpg) will invoke a file-selector
-dialog. Select the sample that you want and it will be both copied to
-the Journal and loaded into a Python block.
-
-**Loading code from the Journal**
-
-Clicking on a Python block
-![pythoncodeblock](images/45px-Pythoncodeblock.jpg) that has been
-dragged onto the canvas from the Extras palette will invoke an
-object-selector dialog.
-
-Select the Python code that that you want and that code will be loaded
-into the selected block.
-
-You can't run a Python block by clicking on it, as that opens the object
-selector; instead attach the block to another one and click elsewhere on
-the stack you have created.
-
-Which ever way you create them, multiple Python blocks can have
-different code loaded in them.
-
-Modifying Turtle Art
-====================
-
-Turtle Art is under the MIT license. You are free to use it and learn
-with it. You are also encourage to modify it to suit your needs or just
-for a further opportunity to learn.
-
-Much of the motivation behind the Version 83 refactoring of the code was
-to make it easier for you to make changes. Most changes can be confined
-to two modules: taconstants.py and talogo.py. The former defines the
-blocks and palettes; the latter defines what code is executed by a
-block.
-
-**Note:** As of Version 106, there is also support for plugins. If you
-can use the plugin mechanism to add support for additional devices,
-e.g., Arduino, or for making modifications such as are described below
-without making changes to the standard code base. (The advantage to the
-latter is that your changes will remain intact even after you upgrade to
-a newer version.)
-
-The tabasics.py file contains the constants that by-in-large determine
-the behavior of Turtle Art. Notably, the block palettes are defined
-below. If you want to add a new block to Turtle Art, you could simply
-add a block of code to that file or to turtle\_block\_plugin.py, which
-contains additional blocks. (Even better, write your own plugin!!)
-
-Adding a new palette is simply a matter of:
-
- palette = make_palette('mypalette', # the name of your palette
- colors=["#00FF00", "#00A000"],
- help_string=_('Palette of my custom commands'))
-
-For example, if we want to add a new turtle command, 'uturn', we'd use
-the add\_block method in the Palette class.
-
- palette.add_block('uturn', # the name of your block
- style='basic-style', # the block style
- label=_('u turn'), # the label for the block
- prim_name='uturn', # code reference (see below)
- help_string=_('turns the turtle 180 degrees'))
-
-Next, you need to define what your block will do. def\_prim takes 3
-arguments: the primitive name, the number of arguments—0 in this
-case—and the function to call—in this case, the canvas.seth function to
-set the heading.
-
- self.tw.lc.def_prim('uturn', 0,
- lambda self: self.tw.canvas.seth(self.tw.canvas.heading + 180))
-
-That's it. When you next run Turtle Art, you will have a 'uturn' block
-on the 'mypalette' palette.
-
-You will have to create icons for the palette-selector buttons. These
-are kept in the icons subdirectory. You need two icons: mypaletteoff.svg
-and mypaletteon.svg, where 'mypalette' is the same string as the entry
-you used in instantiating the Palette class. Note that the icons should
-be the same size (55x55) as the others. (This is the default icon size
-for Sugar toolbars.)
-
-Where to report problems
-========================
-
-Please file bug reports
-[here](https://bugs.sugarlabs.org/newticket?component=Turtleart).
-
-Credits
-=======
-
-> Walter Bender and Raúl Gutiérrez Segalés maintain the code (with some
-> occasional help from Simon Schampijer) Alan Jhonn Aguiar Schwyn and
-> the Butia Team have provided great feedback and many patches.
-> Especially helpful feedback from Tony Forster, Guzmán Trinidad, and
-> Bill Kerr Brian Silverman is the first author of Turtle Art