Snap!はScratch3.0とよくにていますが、よりむずかしいブロックをつくることができます。
A.シンプルブロック
すべてのパレットの下の方には、「ブロックをつくる」ボタンがあります。クリックすると、ダイアログボックスが表示され、ブロックの名前、かたち、およびどのパレットにふくまれるかをえらぶことができます。また、このブロックは「すべてのスプライトよう」か、それとも「このスプライトよう」およびかんけいのあるスプライトようかを決めることができます。
ブロックの形は3種類あり、Scratchユーザーにはわかりやすくなっています。ジグソーパズルピースがたのブロックはコマンドであり、「あたい」を返しません。だ円形のブロックは「あたい」を返します。六角形のブロックはじゅつごで、ブール値(真か偽か)を「あたい」として返します。
たとえば、四角形をかく「しかく」という名前のブロックを作りたいとします。そのばあい、「うごき」を選択します。コマンドを入力し、名前のところに「しかく」と入力します。OKをクリックすると、ブロックエディタに入ります。これはは、スプライトのスクリプト領域でスクリプトを作成するのと同じようにうごきます。
ブロックエディタの中の、ぼうしのブロックは、スクリプトの始まりです。「[]がおされたとき」のブロックと同じように、そこからスクリプトが始まります。ぼうしのぶろっくを「プロトタイプ」ブロックといいます。

パレットエリアからブロックエディタの中にブロックをおきます。

ブロックの動きを変えてちがう大きさの四角形をかけるようにするには、Controlキーをおしながらブロックをクリックするか、ブロックを右クリックして「へんしゅう」を選ぶと、ブロックエディターが開きます。
ぼうしの「プロトタイプ」ブロックの「+」マークのところに、マウスを乗せると色が変わります。
みぎがわの「+」マークをクリックすると、「ひきすうめいをさくせい」ダイヤログがあらわれます。

「おおきさ」と入力し、OKをクリックします。このダイアログで、「タイトルテキスト」を選択するとブロック名を文字ではさんで、「xざひょうを ( ) づつかえる」ブロックのように、入力スロットの後にテキストを表示できます。また、「ひきすうめい」の右がわの▶ボタンをおすと、入力名に関するいろいろな方法をえらぶことができます。しかし、それは後回しにしましょう。
OKをクリックすると、ぼうしがたの「プロトタイプ」ブロックに新しい入力があらわれます。

オレンジ色の「おおきさ」ブロックを動かして「[]ほうごかす」ブロックに入れてみましょう

パレットエリアにブロックが完成しました。

この「しかく[]」ブロックに、好きな大きさを入れれば、好きな大きさの四角形を書くことができます。
A. ブロックのせっていをへんしゅうする
ブロックの色(パレット)や形(コマンドブロック、ほうこくブロック、じゅつごぶろっく)について気が変わったらどうすればいいでしょうか。ぼうしがたの「プロトタイプ」ブロックの、ぼうしのところをクリックすると、ダイヤログウィンドウが表示されます。 そのブロックがスクリプトで使われていない時は、色や、時には形を変えられます。をスクリプト領域や他のカスタムブロックの中で使用することができます。「モニター」を選ぶと、あたいを返すブロックを作ることができます。
「じゅつご」を選ぶと、「もし~なら」ブロックで使われる「はい、か、いいえ」を返すブロックを作ることができます。
ぼうしブロックを右クリックすると、このようなメニューがあらわれます。

「スクリプトのがぞう」は、スクリプトのがぞうをエクスポートします。(このマニュアルのイラストの多くはこの方法で作られています)。
「translation」はダイヤログウィンドウが開き、ユーザーがげんごをえらんだときにブロックがどのようにほんやくされるかを決められます。
「block variables」では、ブロック変数はこのブロックだけの変数を作ることができます。スクリプト変数は、スクリプトが動いているときだけ使うことができ、スクリプトが終わったら変数の中のあたいが消える変数を作ることができます。一方、ブロック変数は、スクリプト変数と同じようにこのブロックの中だけで使われますが、同じブロックが何回も呼ばれた時は変数の中のあたいは引きつがれます。しかし、別のところでブロックが使われた時は、別の変数になりあたいは引きつがれません。


あるスプライトでこのスクリプトを動かすと、1から4まで数えて、次に1から6まで数えることになります。
「へんしゅう」では、
B. さいき的実行
新しくブロックを作ると、そのブロックエディターの中でも新しく作ったブロックを使うことができます。これをさいき的実行といいます。

このプログラムを動かすと木のようなもようが現れるでしょう。くりかえしを使ってむずかしいスクリプトを書かなくても、「もし~なら」ブロックとさいき的実行をすることでこのようなもようを書くことができます。
さいき的実行はきほんとなる場合を持つことが重要です。ブロックがさいき的実行を使わずに動く場合、「木」のブロックのれいでは、ふかさが0の場合です。このとき、「もし~なら」ブロックで囲まれているので、「木」のブロックはよび出されることはないので、ブロックは何もしません。これが、きほんとなる場合です。きほんとなる場合がなければ、「木」のブロックは何度もよびだされて、ずっと続いてしまいます。
さいき的なプログラムにおいて、コンピュータがたどるすべてのステップを追いかけるのはやめた方がいいでしょう。その代わりに、コンピュータの中に小さな人間がたくさんいて、チキリさんがサイズ50の木を書きたいと考えてみましょう。一人で書くのは大変なので、大きさ35、深さ5の木を作るためにオキホさんにお願いして、そのあと大きさ35の別の木を作るためにマキナさんにお願いするといったように、それぞれの小人さんが、自分のローカル変数「おおきさ」と「ふかさ」はそれぞれ違うあたいを使います。
あたいを返すブロックでさいき的に実行することもできます。「かいじょう」ブロックを作り、ぼうしの「プロトタイプ」ブロックを右クリックして、へんしゅうを選び、「モニター」ブロックに変えて以下のスクリプトを書いてみましょう。


かいじょうとは、たとえば4のかいじょうは、4×3×2×1のようにひきすうの数字からじゅんばんに小さい数字をかけていくものです。
あたいを返すブロックのスクリプトの中で、あたいを返すブロックをよび出すことも、さいき的な実行です。「あたい」変数はよびだされるたびにじゅんばんにへっていき、「もし【あたい=0】なら」が成り立つと、そこから1が返り、次に1×1=1が返り、次に2×1=2が返り、次に3×2=6が返り、次に4×6=24とどんどんかけ算が行われていきます。


