提供:Japanese Scratch-Wiki
(定義ブロックから転送)
この項目は、書きかけの項目です。この項目に加筆・訂正などをしてくださる協力者を求めています。
|
定義 | |
定義 ブロック名
| |
カテゴリ | ブロック定義 |
タイプ | ハット |
定義ブロック(ブロック定義ブロック/ハットブロック)とは、このハットブロックの下に繋げたブロックを1つのブロックとして表すことができるブロックである。必ず() (ブロック定義ブロック、スタックブロック)とセットで使われる。このスタックブロックが表す内容は、このハットブロックで「定義」される。定義ブロックの下にはブロックたちをくっつけることができる。実行した時には、定義ブロックの下にくっついたブロックたちが動作する。
定義ブロックを使うと、同一のプロジェクトの中で繰り返し使うコードを簡潔に表記できる。
定義ブロックには、真偽値や数値などの引数、ラベルのテキストなどが追加できる。
作成方法
- ブロックパレットの「ブロック定義」カテゴリにある「ブロックを作る」ボタンを押す。
- ブロック名や、必要に応じて真偽ブロックや値ブロック(引数)を設定する。
- 「OK」ボタンを押す。
- 新しい定義ブロックを作成できる。
使用例
- ジャンプ
定義 ジャンプ (20) 回繰り返す y座標を (1) ずつ変える //上向きに動かす end (20) 回繰り返す y座標を (-1) ずつ変える //下向きに動かす end
@greenFlag が押されたとき ::events hat [i v] を (0) にする ペンを下ろす (200) 回繰り返す 描く :: custom 定義 描く [i v] を (0.2) ずつ変える ((i) * (5)) 歩動かす @turnright ((120) + (i)) 度回す ペンの色を (i) にする ペンの太さを (i) にする
- スプライトがB度の方向にn歩動いてA度を向く
定義 (B) 度の方向に (n) 歩動いて (A) 度を向く (B) 度に向ける (n) 歩動かす (A) 度に向ける
定義ブロックで真偽値を使う例
- 真偽値がtrueの時、指定した言葉を言う
定義 <真偽値> のとき [言葉]と言う もし <真偽値> なら: (言葉) と言う end
他のブロックによる表現
- 詳細は「代用ブロック一覧」を参照
メッセージブロックを使えばこのように表現できる。
[procedure v] を送って待つ [procedure v] を受け取ったとき (10) 歩動かす
これは背景でも使える。
しかし定義ブロックは再帰的で、メッセージは末尾再帰的であるためこれは完璧な代用ではない。メッセージには画面の再描画が必要で、入力は別々の変数が必要。
バグ
このページの改善にご協力ください。また、このページを改善するまでは、このテンプレートを外さないでください。外した場合は、差し戻されます。 以下に理由と要改善点を提示します。 理由と改善点: 内容が不明瞭 |
真偽値を含む定義ブロックは、その値の変化に反応しない。 また、画面を再描画せずに実行するオプションを使うと、バグが起こることがある。
画面を再描画せずに実行する
定義を作る際に、その定義を実行している間は画面を再描画(描画しなおす)しないよう指定することができる。
(30) 回繰り返す (1) 歩動かす end
のようなものを普通に実行した場合、少しずつ動くのを30回繰り返す。しかし、画面を再描画をせずに実行すると、定義ブロックの実行中は画面はそのままになるので、一瞬で30歩動いたように見せることができる。これを使えば大幅な高速化が可能である。
なお、「ずっと」や「()秒待つ」を再描画せずに実行してはならない[要出典]。
同じ名前のブロック
バックパックから持ってきた定義の名前がもともとあった定義の名前と被った場合、どちらかが使用できなくなる。これを解消するには、どちらかの定義を削除するか、どちらかの名前を変更し、連動して変更されるすべてのブロックを確認・修正する必要がある。
ハッキング
この項目には、最新バージョンのScratchには存在しない機能について書かれています。現在は使うことができないので、注意してください。 |
- 詳細は「JSONチュートリアル」を参照
ファイルを変更し、選択欄をつける等、通常はできない機能を定義につけることができた。(リストの選択、角度の選択、全て、コスチューム、音 このスクリプト これ以外のスクリプトの選択など)
詳しくはトピック: Scratch2.0をハッキングしよう! に記載されている。 新しいトピックは、トピック: Scratch 2.0をハッキングしよう! 続。