Eng:Block Plugin/Syntax

This article shows the Block Plugin syntax.

On the Scratch Forums, code must be written between  tags. (On the wiki,  tags are used.) For a simplified explanation, see here.

Every block goes on a new line, and is written as the text on the block is shown on Scratch. For example:

Arguments
Arguments, or inputs to a blocks, are represented within the block with various codes.

Numerical Insert
The round numerical insert is used with the token. move (10) steps move (10) steps

String Insert
String inserts are created with the token say [Hi] say [Hi]

think [bye] think [bye]

Block Insert
Boolean Blocks and Reporter Blocks are created with  and , respectively. if < and <(costume #) = [1]>> then stamp end if < and <(costume #) = [1]>> then stamp end Note that booleans appear like reporter blocks due to a technical limitation.

Color Picker
A color picker is represented with. #hexcode is a hexadecimal color code. set pen color to [#00FF00] set pen color to [#00FF00]

This website can be used to find hexadecimal colors.

Dropdown List
Dropdown lists are created with the code broadcast [start v] broadcast [start v]

Special Blocks
Some blocks have different code based on their unique shapes and features, as well as technical limitations.

Hat Blocks
The When Green Flag Clicked block can be typed with any of the following syntax: when green flag clicked when gf clicked when flag clicked when gf clicked

For the When Clicked block, the old block plugin required the sprite's name to be surrounded by brackets. This is no longer necessary: When this sprite clicked when this sprite clicked The When key pressed block uses a drop-down menu: when [space v] key pressed when [space v] key pressed

Stack Blocks
The Turn Degrees (clockwise) block can be written two ways: turn cw degrees turn right degrees turn cw degrees

The Turn Degrees (counter-clockwise) block can be written two ways:

turn ccw degrees turn left degrees turn ccw degrees

C Blocks
C blocks must be closed by typing "end" after the last stack block inside it. However, C blocks at the end of a script will close automatically. For example: repeat (10) move (5) steps stamp end repeat (10) move (10) steps stamp Makes: repeat (10) move (5) steps stamp end repeat (10) move (10) steps stamp

Comments
Comments are created with the  token, after a block. move (10) steps //is that too far? move (10) steps //is that too far?

Custom Blocks
If one tries to show a custom block, it will appear obsolete (red) because it has not been defined. jump jump

A definition hat can be created by writing "define", and then the text of the block: define jump repeat (10) change y by (4) end define jump repeat (10) change y by (4) end

Number, boolean, and string arguments can be added: define jump (height)  [message] define jump (height)  [message]

Once a define hat has been made, one can then use the block inside the same &lt;scratchblocks&gt; tag, and it will no longer appear obsolete. jump

define jump repeat (10) change y by (4) end jump

define jump repeat (10) change y by (4) end

Custom Block Inputs
If one tries to use an input reporter without making a block definition first, it will appear as a variable. say (height) say (height)

But if it is put below a block definition, it will render as an input reporter: define jump (height) say (input) define jump (height) say (height)

List Reporters
If one tries to write a list reporter, it will look like a variable reporter, because the plugin has no way of telling them apart.

say (list of Scratch team members) say (list of Scratch team members)

However, if one has used the list in a list block inside the same &lt;scratchblocks&gt; tag, then it will render correctly:

add [mres] to [list of Scratch team members v] add [paddle2see] to [list of Scratch team members v] add [harakou] to [list of Scratch team members v] say (list of Scratch team members) add [mres] to [list of Scratch team members v] add [paddle2see] to [list of Scratch team members v] add [harakou] to [list of Scratch team members v] say (list of Scratch team members)

If a list block is not wanted or needed inside the same &lt;scratchblocks> tag,  can be used:

say (list of Scratch team members :: list) say (list of Scratch team members :: list)

Shortening Source Code
It is possible to make the source of ScratchBlocks code slightly shorter by removing unnecessary code. No spaces are necessary between an insert and the block text. Also, closing brackets and parentheses  can be left off at the end of a line. Therefore, the following two snippets render identically, though the first is 226 characters, and the second only 183:

when gf clicked ask [n=] and wait set [n v] to (answer) set [i v] to [0] repeat until <(n) = [1]> if <((n) mod (2)) = [0]> then set [n v] to ((n) / (2)) else set [n v] to (((3) * (n)) + (1)) end change [i v] by (1) end say (i) when gf clicked ask[n=]and wait set[n v]to(answer set[i v]to[0 repeat until<(n)=[1 if<((n)mod(2))=[0]>then set[n v]to((n)/(2 else set[n v]to(((3)*(n))+(1 end change[i v]by(1 end say(i

when gf clicked ask[n=]and wait set[n v]to(answer set[i v]to[0 repeat until<(n)=[1 if<((n)mod(2))=[0]>then set[n v]to((n)/(2 else set[n v]to(((3)*(n))+(1 end change[i v]by(1 end say(i

However, this is considered poor style, and is not recommended.

Hacks
There are some hacks available in the plugin, in order to make it usable with Scratch Modifications. Most of these are now widely available on the forums, however the wiki still uses an outdated version, so many hacks will not appear correctly.

For an in depth tutorial on scratchblocks tricks that can only be used in the forums, please read through this topic: http://scratch.mit.edu/discuss/topic/55586

Color and Shape Changing
The color and shape of a block can be changed. This can be useful for forcing non-Scratch blocks to appear correctly. Note that only color changing with the legacy syntax works in the old version. The legacy syntax is obsolete (it no longer works since scratchblocks3).

Snap!
The new plugin also supports features specific to Snap!, such as "rings". Other blocks in Snap! can be created using the color/shape hacks above.

run ({create clone :: control} @addInput :: grey ring) :: control

< @addInput :: grey ring>

say (http:// [snap.berkeley.edu] :: sensing)

((6) × (7) :: operators)

(join [hello ] [world] @delInput @addInput :: operators)

script variables ((foo) :: grey) ((bar) :: grey) @delInput @addInput :: grey

(all but first of (list) :: list)

warp { move (10) steps } :: grey

report [Done!] :: control cap

(<> @addInput) // without even the :: grey ring which produces these blocks: run ({create clone :: control} @addInput :: grey ring) :: control

< @addInput :: grey ring>

say (http:// [snap.berkeley.edu] :: sensing)

((6) × (7) :: operators)

(join [hello ] [world] @delInput @addInput :: operators)

script variables ((foo) :: grey) ((bar) :: grey) @delInput @addInput :: grey

(all but first of (list) :: list)

warp { move (10) steps } :: grey

report [Done!] :: control cap

(<> @addInput) // without even the :: grey ring

GP
This plugin also includes hacks to GP. when tracking (mouse x :: variables) (mouse y :: variables) :: hat control

((1) != (0) :: operators)

define(a function :: motion) :: custom hat return (1) :: control

say (pi :: operators) :: motion

when I receive [go] :: control

wait @addInput :: control

(isNil [obj v] :: operators)

(touching mouse :: sensing)

((--( :: #ffffff) :: operators) :: operators)

if (--( :: #ffffff) :: operators) { } @addInput :: control

Scratch Wiki Accueil/le forum/blocs du forum/liste blocs