C blocks have a "mouth" (it looks like the letter "C", hence the name) — the blocks that will be played with the C block go in these mouths. All but one of the C blocks consist of one mouth — the other,
if <> then
else, consists of two mouths. When any of the other C blocks are dragged over a stack of blocks — if the C is empty — its mouth extends to wrap around them.
Most C blocks, like Stack Blocks, have a notch on the top of the block and a bump on the bottom, signifying that other blocks can be stacked above or below them. The
forever is an exception in that it only has a notch, as other blocks are not meant to be placed below it in a script.
repeat (10) repeat until <(loudness) > > glide (1) secs to x: (10) y: (0) wait (1) secs go to x: (0) y: (0) end play sound [meow v] until done end
In 1.2.1 and earlier, C-block scripts could only be built one block at a time.
In Scratch 1.4 and earlier, there was also a
forever if <>::control block. It was replaced with its workaround.
forever if <> then
As C blocks are for checks and loops, they are used almost everywhere. Some uses include:
- Things that must go on forever
when gf clicked forever turn cw (15) degrees
- Checking a condition
when [space v] key pressed if <(loudness) > > then stop [all v] end
- Repeating an animation a certain amount of times
when gf clicked repeat (200) turn ccw (36) degrees change [color v] effect by (1) end
Here is an example for both checks and looping:
when I receive [Decrease health v] change [Health v] by (-1) if <(health) = > then repeat (8) change [color v] effect by (25) end end
when gf clicked if<key [space v] pressed?> then stop [all v] else end
There is a check (the If () Then block is checking if the variable Health has a value of 0), and inside the check is a repeat loop (with the Repeat () block). Note how C blocks can be placed inside other C blocks.