You are on page 1of 13

2/4!4)/.349,% 4!

"3
#ONTROLWHETHERCOSTUMES #LICKTABSTOEDITSCRIPTS
ROTATEWITHTHESPRITE COSTUMES ORSOUNDS
'2%%.&,!'
#522%.4302)4%).&/ 4//,"!2 !WAYTOSTARTSCRIPTS

02/*%#4./4%3

34!'%
7HEREYOUR
3CRATCHCREATIONS
",/#+30!,%44% COMETOLIFE
"LOCKSFOR
PROGRAMMING
YOURSPRITES

.%7302)4%"544/.3
#REATEANEW
CHARACTEROROBJECT
FORYOURPROJECT

3#2)043!2%! 02%3%.4!4)/.-/$% 302)4%,)34


$RAGBLOCKSIN SNAPTHEM 4HUMBNAILSOFALLYOUR
TOGETHERINTOSCRIPTS SPRITES#LICKTOSELECT
ANDEDITASPRITE
People have access to an incredible variety of media. Coding in Scratch is much easier than
interactive games, stories, animations, in traditional programming languages: to
simulations, and other types of dynamic, create a script, you simply snap together
interactive media on their computers today. graphical blocks, much like LEGO bricks or
But, for the most part, these programs are a puzzle pieces.
one-way street: you can only browse and click
what others have created; you can’t design
and create your own.

Scratch changes that, broadening the range


of what you can design and create on the
computer, making it easier to combine
graphics, photos, music, and sound into
interactive creations. With Scratch, you can
create characters that dance, sing, and
interact with one another. Or create images Once you’ve created a Scratch project, you
that whirl, spin, and animate in response to can share it on the Scratch website, the same
movements of the mouse. Or integrate images way you might share videos on YouTube or
with sound effects and music clips to create an photos on Flickr. Or you can embed your
interactive birthday card for a friend, or an Scratch project in any other webpage – for
interactive report for school. example, embedding an interactive Scratch
animation on your MySpace or Facebook
The name Scratch comes from the homepage.
scratching technique used by hip-hop disc
jockeys, who spin vinyl records back and forth You can get new ideas for Scratch projects by
with their hands to mix music clips together in browsing through projects on the Scratch
creative ways. You can do something similar website. If you like one of the characters or
with Scratch, mixing different types of media images or scripts in another project, simply
clips (graphics, photos, music, sounds) in download the project and use parts of it in
creative ways. your own Scratch project.

At the core of Scratch is a graphical Below are snapshots from projects that other
programming language that lets you control people created with Scratch. What do you
the actions and interactions among different want to create with Scratch?

Lifelong Kindergarten Group, MIT Media Lab


!"#$%&'%($)&*+$(%!"#$%%#(%$"*,%-.*#$*% >"/(%;.'C*-$F&*(/3+%;.'-*((%-'29/+*(%2#+,%'?%
/+$*.#-$/0*%($'./*(1%#+/2#$/'+(1%3#2*(1%2)(/-1% $"*%450'+*"%'/$6+!"#$%)%1+07)!!0%$"#$%4/88%9*%
#+&%#.$%4/$"%5-.#$-"6% -./$/-#8%$'%()--*((%/+%$"*%?)$).*A%$"/+B/+3%
% -.*#$/0*8,1%-'22)+/-#$/+3%-8*#.8,1%#+#8,G/+3%
7'.%'+*%$"/+31%$"*,%8*#.+%&#'("&#')*#!+#%,+ (,($*2#$/-#88,1%-'88#9'.#$/+3%*??*-$/0*8,1%
*-&./'#')-%#!+),"#0+$"#$%#.*%9)/8$%/+$'%$"*% &*(/3+/+3%/$*.#$/0*8,1%8*#.+/+3%-'+$/+)')(8,<%
5-.#$-"%*:;*./*+-*<%=(%($)&*+$(%-.*#$*% %
;.'3.#2(%/+%5-.#$-"1%$"*,%8*#.+%-'.*% H.*#$/+3%;.'C*-$(%/+%5-.#$-"%#8('%"*8;(%
-'2;)$#$/'+#8%-'+-*;$(%()-"%#(%/$*.#$/'+%#+&% ($)&*+$(%&*0*8';%#%&**;*.%8*0*8%'?%2!/"%*6%
-'+&/$/'+#8(<%>"*,%#8('%3#/+%#+%)+&*.($#+&/+3% 4/$"%&/3/$#8%$*-"+'8'3,<%!"#$%&'%4*%2*#+%9,%
'?%/2;'.$#+$%2#$"*2#$/-#8%-'+-*;$(%()-"%#(% ?8)*+-,6%>'%9*%-'+(/&*.*&%?8)*+$%/+%I+38/("1%
-''.&/+#$*(1%0#./#98*(1%#+&%.#+&'2%+)29*.(<% 5;#+/("1%'.%'$"*.%8#+3)#3*1%,')%2)($%8*#.+%
% +'$%'+8,%"'4%$'%.*#&%9)$%#8('%$'%4./$*%J%$"#$%/(1%
5/3+/?/-#+$8,1%($)&*+$(%8*#.+%$"*(*%-'+-*;$(%/+% "'4%$'%*:;.*((%,').(*8?%4/$"%$"*%8#+3)#3*<%
#%&"#%)%12/!%#+&%&-')3#')%1%-'+$*:$<%!"*+% 5/2/8#.8,1%$'%9*%?8)*+$%4/$"%&/3/$#8%$*-"+'8'3,1%
($)&*+$(%8*#.+%#9')$%0#./#98*(%/+%$.#&/$/'+#8% ,')%2)($%8*#.+%+'$%'+8,%"'4%$'%/+$*.#-$%4/$"%
#83*9.#%-8#((*(1%$"*,%)()#88,%?**8%8/$$8*% $"*%-'2;)$*.%9)$%#8('%$'%-.*#$*%4/$"%/$<%%
;*.('+#8%-'++*-$/'+%$'%$"*%-'+-*;$<%@)$%4"*+% %
$"*,%8*#.+%#9')$%0#./#98*(%/+%$"*%-'+$*:$%'?% K?%-').(*1%2'($%($)&*+$(%4/88%+'$%3.'4%);%$'%
5-.#$-"1%$"*,%-#+%)(*%0#./#98*(%/22*&/#$*8,%/+% 9*-'2*%;.'?*((/'+#8%;.'3.#22*.(1%C)($%#(%
0*.,%2*#+/+3?)8%4#,(A%$'%-'+$.'8%$"*%(;**&%'?% 2'($%4/88%+'$%9*-'2*%;.'?*((/'+#8%4./$*.(<%@)$%
#+%#+/2#$/'+1%'.%$'%B**;%$.#-B%'?%$"*%(-'.*%/+%#% !"#$%)%1+'-+.$-1$#&%'??*.(%9*+*?/$(%?'.%
3#2*%$"*,%#.*%-.*#$/+3<% *0*.,'+*A%/$%*+#98*(%($)&*+$(%$'%*:;.*((%
% $"*2(*80*(%2'.*%?)88,%#+&%-.*#$/0*8,1%"*8;(%
=(%($)&*+$(%4'.B%'+%5-.#$-"%;.'C*-$(1%$"*,% $"*2%&*0*8';%#(%8'3/-#8%$"/+B*.(1%#+&%"*8;(%
#8('%8*#.+%#9')$%$"*%.$-*"00+-2+,"0)1%<% $"*2%)+&*.($#+&%$"*%4'.B/+3(%'?%$"*%+*4%
>,;/-#88,1%#%($)&*+$%4/88%($#.$%4/$"%#+%/&*#1% $*-"+'8'3/*(%$"#$%$"*,%*+-')+$*.%*0*.,4"*.*%
-.*#$*%#%4'.B/+3%;.'$'$,;*1%*:;*./2*+$%4/$"%/$1% /+%$"*/.%*0*.,&#,%8/0*(<%
&*9)3%/$%4"*+%$"/+3(%3'%4.'+31%3*$%?**&9#-B% +
?.'2%'$"*.(1%$"*+%.*0/(*%#+&%.*&*(/3+%/$<%D$E(%#% 8"2"$"%*"0+
L*$"/+B/+3%M*#.+/+3%/+%$"*%N/3/$#8%=3*%
-'+$/+)')(%(;/.#8A%3*$%#+%/&*#1%-.*#$*%#%;.'C*-$1% "$$;AOO444<2*&/#<2/$<*&)OP2.*(O;#;*.(O4*?<;&?%
4"/-"%8*#&(%$'%+*4%/&*#(1%4"/-"%8*#&%$'%+*4% %
($
M*#.+/+3%?'.%$"*%QR %H*+$).,%S"$$;AOO444<QR($-*+$).,(B/88(<'.3OT%
;.'C*-$(1%#+&%'+%#+&%'+<%%

M/?*8'+3%U/+&*.3#.$*+%V.');1%WD>%W*&/#%M#9
Most people view computer programming as • Sharing and collaboration. The Scratch
a tedious, specialized activity, accessible only website provides inspiration and audience:
to those with advanced technical training. And, you can try out other people’s projects, re-
indeed, traditional programming languages like use and adapt their images and scripts, and
Java and C++ are very difficult for most people post your own projects. The ultimate goal is
to learn. to develop a shared community and culture
around Scratch.
Scratch, a new graphical programming
language, aims to change that. Scratch takes
advantage of advances in computing power
and interface design to make programming
more engaging and accessible for children,
teens, and others who are learning to
program. Key features of Scratch include:

• Building-block programming. To create


programs in Scratch, you simply snap Scratch offers a low floor (easy to get
graphical blocks together into stacks. The started), high ceiling (ability to create
blocks are designed to fit together only in complex projects), and wide walls (support for
ways that make syntactic sense, so there a wide diversity of projects). In developing
are no syntax errors. Different data types Scratch, we put high priority on simplicity,
have different shapes, eliminating type sometimes even sacrificing functionality for
mismatches. You can make changes to understandability.
stacks even as programs are running, so it
is easy to experiment with new ideas As students work on Scratch projects, they
incrementally and iteratively. have opportunities to learn important
computational concepts such as iteration,
conditionals, variables, data types, events, and
processes. Scratch has been used to
introduce these concepts to students of many
different ages, from elementary school through
college. Some students transition to traditional
text-based languages after getting introduced
• Media manipulation. With Scratch, you to programming with Scratch.
can create programs that control and mix
graphics, animations, music, and sound. Scratch is built on top of the Squeak
Scratch extends the media-manipulation programming language. It was inspired by
activities that are popular in today’s culture previous work on Logo and Squeak Etoys,
– for example, adding programmability to but it aims to be simpler and more intuitive.
Photoshop-style image filtering.
Scratch is an open-source but closed-
development project. The source code is
freely available, but the application is
developed by a small team of researchers at
the MIT Media Lab.

Lifelong Kindergarten Group, MIT Media Lab


REFERENCE GUIDE
BLOCK DESCRIPTIONS
The Scratch blocks are organized into eight color-coded categories: motion, looks, sound, pen, control,
sensing, numbers, and variables.

Motion
Moves sprite forward or backward.

Rotates sprite clockwise.

Rotates sprite counterclockwise.


Points sprite in the specified direction. (0=up, 90=right,
180=down, -90=left)

Points sprite toward mouse-pointer or another sprite.

Moves sprite to specified x and y position on Stage.


Moves sprite to the location of the mouse-pointer
or another sprite.
Moves sprite smoothly to a specified position over
specified length of time.
Changes sprite’s x-position by specified amount.

Sets sprite’s x-position to specified value.

Changes sprite’s y-position by specified amount.

Sets sprite’s y-position to specified value.


Turns sprite in opposite direction when sprite touches
edge of Stage.

Reports sprite’s x-position. (Ranges from -240 to 240)

Reports sprite’s y-position. (Ranges from -180 to 180)

Reports sprite’s direction. (0=up, 90=right, 180=down, -90=left)

http://scratch.mit.edu 11 REFERENCE GUIDE


REFERENCE GUIDE
Looks
Changes sprite’s appearance by switching to different
costume.
Changes sprite’s costume to next costume in the cos-
tume list. (If at end of the costume list, jumps back to first costume.)

Reports sprite’s current costume number.

Changes Stage’s appearance by switching to a different


background.

Changes Stage’s background to next background in


the background list.

Reports Stage’s current background number.

Displays sprite’s speech bubble for specified


amount of time.
Displays sprite’s speech bubble. (You can remove speech
bubble by running this block without any text.)

Displays sprite’s thought bubble for specified


amount of time.

Displays sprite’s thought bubble.

Changes a visual effect on a sprite by specified amount.


(Use pull-down menu to choose effect.)

Sets a visual effect to a given number. (Most visual effects


range from 0 to 100.)

Clears all graphic effects for a sprite.

Changes sprite’s size by specified amount.

Sets sprite’s size to specified % of original size.

Reports sprite’s size, as % of original size.

Makes sprite appear on the Stage.

http://scratch.mit.edu 12 REFERENCE GUIDE


REFERENCE GUIDE
Makes sprite disappear from the Stage. (When sprite is
hidden, other sprites cannot detect it with touching? block.)

Moves sprite in front of all other sprites.

Moves sprite back a specified number of layers, so that


it can be hidden behind other sprites.

Sound
Starts playing a sound, selected from pull-down menu,
and immediately goes on to the next block even as
sound is still playing.
Plays a sound and waits until the sound is finished
playing before continuing with next block.

Stops playing all sounds.

Plays a drum sound, selected from pull-down menu, for


specified number of beats.

Plays a musical note (higher numbers for higher pitches) for


specified number of beats.

Sets the type of instrument that the sprite uses for


play note blocks. (Each sprite has its own instrument.)

Changes sprite’s sound volume by specified amount.

Sets sprite’s sound volume to specified value.

Reports sprite’s sound volume.

Changes sprite’s tempo by specified amount.

Sets sprite’s tempo to specified value in beats per min-


ute.

Reports sprite’s tempo in beats per minute.

http://scratch.mit.edu 13 REFERENCE GUIDE


REFERENCE GUIDE
Pen
Clears all pen marks and stamps from the Stage.

Puts down sprite’s pen, so it will draw as it moves.

Pulls up sprite’s pen, so it won’t draw as it moves.

Sets pen’s color, based on choice from color picker.

Changes pen’s color by specified amount.

Sets pen’s color to specified value. (pen-color=0 at red end of


rainbow, pen-color=100 at blue end of rainbow)

Changes pen’s shade by specified amount.

Sets pen’s shade to specified amount. (pen-shade=0 is very


dark, pen-shade=100 is very light)

Changes pen’s thickness.

Sets pen’s thickness.

Stamps sprite’s image onto the Stage.

Control
Runs script below when green flag is clicked.

Runs script below when specified key is pressed.

Runs script below when sprite is clicked.

Waits specified number of seconds, then continues


with next block.

Runs the blocks inside over and over.

Runs the blocks inside a specified number of times.

http://scratch.mit.edu 14 REFERENCE GUIDE


REFERENCE GUIDE
Sends a message to all sprites, triggering them to do
something, and waits until they all finish before con-
tinuing with next block.
Sends a message to all sprites, then continues with the
next block without waiting for the triggered scripts.

Runs script below when it receives specified broadcast


message.

Continually checks whether condition is true; when-


ever it is, runs the blocks inside.

If condition is true, runs the blocks inside.

If condition is true, runs the blocks inside the if por-


tion; if not, runs the blocks inside the else portion.

Waits until condition is true, then runs the blocks


below.
Checks to see if condition is true; if so, runs blocks
inside and checks condition again. If condition is not
true, goes on to the blocks that follow.

Stops the script.

Stops all scripts in all sprites.

http://scratch.mit.edu 15 REFERENCE GUIDE


REFERENCE GUIDE
Sensing
Reports the x-position of mouse-pointer.

Reports the y-position of mouse-pointer.

Reports true if mouse button is pressed.

Reports true if specified key is pressed.


Reports true if sprite is touching specified sprite, edge,
or mouse-pointer. (Selected from pull-down menu.)
Reports true if sprite is touching specified color. (Click on
color patch, then use eyedropper to select color.)

Reports true if first color (within sprite) is touching


second color (in background or another sprite). (Click on
color patch, then use eyedropper to select color.)

Reports distance from the specified sprite or


mouse-pointer.
Sets the timer to zero.

Reports the value of the timer in seconds. (The timer is


always running.)

Reports a property or variable of another sprite.

Reports the volume (from 1 to 100) of sounds detected


by the computer microphone.
Reports true if computer microphone detects a sound
volume greater than 30 (on scale of 1 to 100).
Reports the value of specified sensor. To use this block, you
need to have a Scratch Board connected to your computer. See http://
scratch.mit.edu/scratchboard

Reports true if specified sensor is pressed. To use this


block, you need to have a Scratch Board connected to your computer.
See http://scratch.mit.edu/scratchboard

http://scratch.mit.edu 16 REFERENCE GUIDE


REFERENCE GUIDE
Numbers
Adds two numbers.

Subtracts second number from first number.

Multiplies two numbers.

Divides first number by second number.

Picks a random integer within the specified range.

Reports true if first number is less than second.

Reports true if two numbers are equal.

Reports true if first number is greater than second.

Reports true if both conditions are true.

Reports true if either condition is true.


Reports true if condition is false; reports false if
condition is true.
Reports result of selected function (abs, sqrt, sin, cos, tan,
asin, acos, atan, ln, log, e^, 10^) applied to specified number.

Reports remainder from division of first number by


second number.

Reports closest integer to a number.

Variables
Allows you to create and name a new variable. When you
create a variable, three blocks are created automatically (see below). You
can choose whether the variable is for all sprites (global) or just for one
sprite (local).

Deletes all three blocks associated with the variable.

Changes variable by specified amount.

Sets variable to specified number.


Reports value of variable.

http://scratch.mit.edu 17 REFERENCE GUIDE