提供:Japanese Scratch-Wiki

カスタムブロックから転送)

このきじは ひらがなでよめます。ひらがなでよむ
Document stub.png この項目は、書きかけの項目です。この項目に加筆・訂正などをしてくださる協力者を求めています。

定義
定義 ブロック名
カテゴリ ブロック定義
タイプ ハット

定義ブロック(ブロック定義ブロック/ハットブロック)とは、このハットブロックの下に繋げたブロックを1つのブロックとして表すことができるブロックである。必ず() (ブロック定義ブロック、スタックブロック)とセットで使われる。このスタックブロックが表す内容は、このハットブロックで「定義」される。定義ブロックの下にはブロックたちをくっつけることができる。実行した時には、定義ブロックの下にくっついたブロックたちが動作する。

プロジェクトの中で繰り返し出てくるコードをその定義ブロックを使うだけで簡単に動作させることができる。

定義ブロックには、真偽値や数値などの引数、ラベルのテキストなどが追加できる。


作成方法

  1. ブロックパレットの「ブロック定義」カテゴリにある「ブロックを作る」ボタンを押す。
  2. ブロック名や、必要に応じて真偽ブロック値ブロック(引数)を設定する。
  3. 「OK」ボタンを押す。
  4. 新しい定義ブロックを作成できる。

使用例

  • ジャンプ
定義 ジャンプ
(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) 歩動かす

これは背景でも使える。

しかし定義ブロックは再帰的で、メッセージは末尾再帰的であるためこれは完璧な代用ではない。メッセージには画面の再描画が必要で、入力は別々の変数が必要。

バグ

着手.png このページの改善にご協力ください。また、このページを改善するまでは、このテンプレートを外さないでください。外した場合は、差し戻されます。

以下に理由と要改善点を提示します。
理由と改善点:
内容が不明瞭

真偽値を含む定義ブロックは、その値の変化に反応しない。 また、画面を再描画せずに実行するオプションを使うと、バグが起こることがある。

画面を再描画せずに実行する

定義を作る際に、その定義を実行している間は画面を再描画(描画しなおす)しないよう指定することができる。

(30) 回繰り返す
(1) 歩動かす
end

のようなものを普通に実行した場合、少しずつ動くのを30回繰り返す。しかし、画面を再描画をせずに実行すると、定義ブロックの実行中は画面はそのままになるので、一瞬で30歩動いたように見せることができる。これを使えば大幅な高速化が可能である。

なお、「ずっと」や「()秒待つ」を再描画せずに実行してはならない[要出典]

同じ名前のブロック

バックパックから持ってきた定義の名前がもともとあった定義の名前と被った場合、どちらかが使用できなくなる。これを解消するには、どちらかの定義を削除するか、どちらかの名前を変更し、連動して変更されるすべてのブロックを確認・修正する必要がある。

ハッキング

Archive.png この項目には、最新バージョンのScratchには存在しない機能について書かれています。現在は使うことができないので、注意してください。
詳細は「JSONチュートリアル」を参照

ファイルを変更し、選択欄をつける等、通常はできない機能を定義につけることができた。(リストの選択、角度の選択、全て、コスチューム、音 このスクリプト これ以外のスクリプトの選択など)

詳しくはトピック: Scratch2.0をハッキングしよう! に記載されている。 新しいトピックは、トピック: Scratch 2.0をハッキングしよう! 続

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。