提供: Japanese Scratch-Wiki

(デフォルトソートの整備(Botによる自動編集) () (カスタムブロック) --> () (かすたむふろつく))
(Scratchを正式名所に。(Botの自動編集))
 
5行目: 5行目:
 
==使用例==
 
==使用例==
 
*ジャンプ
 
*ジャンプ
<scratchblocks>
+
<Scratchblocks>
 
定義 ジャンプ
 
定義 ジャンプ
 
(20) 回繰り返す
 
(20) 回繰り返す
13行目: 13行目:
 
   y座標を (-1) ずつ変える //下向きに動かす
 
   y座標を (-1) ずつ変える //下向きに動かす
 
end
 
end
</scratchblocks>
+
</Scratchblocks>
 
*[[フラクタル]]を描く
 
*[[フラクタル]]を描く
 
*[[3D]]エンジン
 
*[[3D]]エンジン
 
*Penを使ったプロジェクト
 
*Penを使ったプロジェクト
<scratchblocks>
+
<Scratchblocks>
 
@greenFlag が押されたとき ::events hat
 
@greenFlag が押されたとき ::events hat
 
ペンを下ろす
 
ペンを下ろす
30行目: 30行目:
 
   ペンの太さを (i) にする
 
   ペンの太さを (i) にする
 
end
 
end
</scratchblocks>
+
</Scratchblocks>
 
*スプライトをA度に向けながらB度に動かす
 
*スプライトをA度に向けながらB度に動かす
<scratchblocks>
+
<Scratchblocks>
 
定義 (A) 度の向きで (B) 度に動かす
 
定義 (A) 度の向きで (B) 度に動かす
 
(B) 度に向ける//スプライト自体の向きは変わらないので、動かさないとわからない
 
(B) 度に向ける//スプライト自体の向きは変わらないので、動かさないとわからない
 
(3) 歩動かす //上で決めた向きに動く
 
(3) 歩動かす //上で決めた向きに動く
 
(A) 度に向ける
 
(A) 度に向ける
</scratchblocks>
+
</Scratchblocks>
 
定義ブロックで真偽値を使う例
 
定義ブロックで真偽値を使う例
 
*真偽値がtrueの時、無限ループとなりコードが動く
 
*真偽値がtrueの時、無限ループとなりコードが動く
<scratchblocks>
+
<Scratchblocks>
 
定義  <boolean> の時 [string]と言う
 
定義  <boolean> の時 [string]と言う
 
もし <boolean> なら:
 
もし <boolean> なら:
 
(string) と言う
 
(string) と言う
 
end
 
end
</scratchblocks>
+
</Scratchblocks>
  
 
==他のブロックによる表現==
 
==他のブロックによる表現==
 
{{メイン|代用ブロック一覧}}
 
{{メイン|代用ブロック一覧}}
 
[[メッセージ]]ブロックを使えばこのように表現できる。
 
[[メッセージ]]ブロックを使えばこのように表現できる。
<scratchblocks> [procedure v] を送って待つ
+
<Scratchblocks> [procedure v] を送って待つ
 
[procedure v] を受け取ったとき
 
[procedure v] を受け取ったとき
(10) 歩動かす</scratchblocks>
+
(10) 歩動かす</Scratchblocks>
 
これは[[背景]]でも使える。
 
これは[[背景]]でも使える。
  

2020年3月12日 (木) 10:56時点における最新版

()定義ブロックは「ブロック定義」パレットの中にある。このブロックの下にくっついて一緒に動作するブロックも合わせて、一つの定義ブロックと呼ばれる。プロジェクトの中で繰り返し出てくるコードをその定義ブロックを使うだけで簡単に動作させることができる。

定義ブロックは「ブロック定義」パレットの中の「ブロックを作る」ボタンを押すと作ることができる。定義ブロックには名前や引数をつけることができ、これらは「ブロックを作る」のメニューから設定可能。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) 歩動かす

これは背景でも使える。

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

バグ

定義ブロックには、真偽値や数値、テキストなどの引数、ラベルのテキストなどが追加できる。 真偽値を含む定義ブロックは、その値の変化に反応しない。 また、画面を再描画せずに実行オプションを使うと、バグが起こることがある。

参照