m (redirected instead of deleting)
 
(10 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{featured|July|2016}}
+
#REDIRECT [[My Blocks]]
'''Custom blocks''' allow for one to make their own programming [[blocks]]. Using custom blocks, similar scripts can be compressed into one reusable block. In some other [[Programming Language|programming languages]], custom blocks are called "procedures," "functions," or "methods." This block is useful for reusing a sequence of blocks in different parts of code, without duplicating the blocks each usage.
 
 
 
[[File:Scratch-2.0-factorial-script.png|thumb|Recursive factorial procedure {{-}} Scratch 2.0 alpha.]]
 
 
 
==Custom Blocks in Scratch==
 
Custom blocks are found in the "[[More Blocks]]" palette.<ref>http://blog.scratch.mit.edu/2012/02/scratch-20-project-page-and-project.html</ref> This is an example of a "jump" block:
 
 
 
<scratchblocks>
 
define jump (how far)
 
change y by (how far)
 
wait (.5) secs
 
change y by ((0) - (how far))
 
 
 
when gf clicked
 
jump (10)
 
move (20) steps
 
jump (20)
 
</scratchblocks>
 
 
 
The custom block palette starts off empty and only shows a "Make a Block" button (similar to the "Make a [[Variable]]/[[List]]" buttons in the [[Data Blocks|data]] palette). For each Define block (whether from the make a block button, or by dragging in from the [[backpack]] or another sprite), a [[() (Custom block)|custom block]] is shown in the palette. The custom block is only available to the sprite that has the Define block.<ref>{{Forum Archive|59483|page=4|p=719181}}</ref>
 
 
 
Custom blocks can only be [[Stack Block|stack blocks]], and can not be [[Reporter Block|reporters]] or [[Boolean Block|booleans]] (though they may be added in the future).<ref>http://scratched.media.mit.edu/discussions/scratch-20/custom-block-types</ref> They support [[recursion]], so blocks can call themselves (This does not stop the current block executing, unlike [[broadcasts]]). This allows for things like [[Recursion and Fractals|creating fractals]] and [[Recursion#Recursion in Scratch 2.0|finding the factorial of a number]].
 
 
 
==Creating a Custom Block==
 
To create a custom block, open the "More Blocks" [[Block Categories|category]]  and press the "Make a Block" button. A new block menu will open, where you can name your custom block. By pressing "Options", you can add [[string]], number, and [[boolean]] [[inputs]]. You can also add more label texts to the block, or make it [[Single Frame|run without screen refresh]]. After naming and adding arguments, a [[Define () (block)|Define]] block is created. A custom block's settings can later be changed by right-clicking on its Define block or the custom block itself and selecting "edit". You can define what your custom block does by snapping a script onto its Define block, as shown below.
 
 
 
<scratchblocks>
 
spin right (360) degrees
 
 
 
define spin right (amount) degrees
 
repeat (amount)
 
turn right (1) degrees
 
end
 
</scratchblocks>
 
 
 
==Scratch 1.x Workaround==
 
<scratchblocks>
 
when gf clicked
 
set [how far v] to [50]
 
broadcast [jump v] and wait
 
 
 
when I receive [jump v]
 
change y by (how far)
 
wait (.5) secs
 
change y by ((0) - (how far))
 
</scratchblocks>
 
 
 
==Procedures in BYOB/Snap!==
 
[[Snap!]], previously called BYOB (Build Your Own Blocks), is a [[Scratch Modification|Scratch modification]] that allows procedures. Snap!'s procedures allow all 3 types of blocks, with arguments, and also recursion.
 
 
 
==See Also==
 
*[[() (Custom block)]]
 
*[[Define () (block)|Define ()]]
 
*[[Squeak Tutorial#Methods|Procedures in Squeak]]
 
*[[How to Use Custom Blocks]]
 
 
 
==References==
 
<references/>
 
[[Category:Scratch Program]]
 
[[Category:Scratch 2.0]]
 
[[Category:More Blocks]]
 
[[de:Unterprogramme]]
 
[[nl:Meer_Blokken]]
 

Latest revision as of 17:25, 6 January 2019

Redirect to: