提供:Japanese Scratch-Wiki
()定義ブロックは「ブロック定義」パレットの中にある。このブロックの下にくっついて一緒に動作するブロックも合わせて、一つの定義ブロックと呼ばれる。プロジェクトの中で繰り返し出てくるコードをその定義ブロックを使うだけで簡単に動作させることができる。
定義ブロックは「ブロック定義」パレットの中の「ブロックを作る」ボタンを押すと作ることができる。定義ブロックには名前や引数をつけることができ、これらは「ブロックを作る」のメニューから設定可能。OKボタンを押すことで、内部で新しい定義ブロックが作成される。定義ブロックの下にはブロックたちをくっつけることができる。実行した時には、定義ブロックの下にくっついたブロックたちが動作する。
使用例
- ジャンプ
定義 ジャンプ (20) 回繰り返す y座標を (1) ずつ変える //上向きに動かす end (20) 回繰り返す y座標を (-1) ずつ変える //下向きに動かす end
@greenFlag が押されたとき ::events hat ペンを下ろす (40) 回繰り返す 描く :: custom 定義 描く (4) 回繰り返す [i v] を (0.2) ずつ変える ((i) * (5)) 歩動かす @turnright ((120) + ((i) / (20))) 度回す ペンの色を (i) にする ペンの太さを (i) にする end
- スプライトをA度に向けながらB度に動かす
定義 (A) 度の向きで (B) 度に動かす (B) 度に向ける//スプライト自体の向きは変わらないので、動かさないとわからない (3) 歩動かす //上で決めた向きに動く (A) 度に向ける
定義ブロックで真偽値を使う例
- 真偽値がtrueの時、無限ループとなりコードが動く
定義 <boolean> の時 [string]と言う もし <boolean> なら: (string) と言う end
他のブロックによる表現
- 詳細は「代用ブロック一覧」を参照
メッセージブロックを使えばこのように表現できる。
[procedure v] を送って待つ [procedure v] を受け取ったとき (10) 歩動かす
これは背景でも使える。
しかし定義ブロックは再帰的で、メッセージは末尾再帰的であるためこれは完璧な代用ではない。メッセージには画面の再描画が必要で、入力は別々の変数が必要。
バグ
定義ブロックには、真偽値や数値、テキストなどの引数、ラベルのテキストなどが追加できる。 真偽値を含む定義ブロックは、その値の変化に反応しない。 また、画面を再描画せずに実行オプションを使うと、バグが起こることがある。