提供: Japanese Scratch-Wiki

このきじは ひらがなのページがありません。ごめんなさい。
もし () なら、でなければ
もし <> なら {} でなければ {} ::control
カテゴリ 制御
タイプ C型

もし () なら、でなければブロック制御ブロックC型ブロック)は、与えられた真偽条件を調べて、その結果が真(True:はい)なら、2つあるC型のスペースのうち、上のCにはさまれた部分のプログラムを実行する。そして実行が終われば、このブロックの下にあるコードに実行がうつる。真偽条件を調べた結果が偽(False:いいえ)なら、下のCにはされまれた部分のプログラムを実行する(この部分が、もし () ならブロックと違うので注意)。

使用例

プログラムをつくるとき、「条件を調べる」のはとても大事なことである。さらに、条件を調べた結果、偽(いいえ)になったときは、それに合わせた処理が必要という場合も多い。Scratchには条件を調べるブロックとしてもし () ならブロックも用意されているが、偽の場合の処理も決めておきたいときは、「もし () なら、でなければブロック」を使ったほうがわかりやすい。次によくある例を示す:

  • 1つめのCに囲まれた部分か、2つめのCに囲まれた部分のどちらかを行う場合
<[端 v]に触れた>まで繰り返す
もし<(音量) > [30]>なら
[もー、静かにしてよ] と (2) 秒言う
でなければ
 (10) 歩動かす
end
end
  • スプライトの体力が決められた値以下になったらゲームオーバー、そうでなければ、何かを行う
@greenFlag が押されたとき::events hat
ずっと
もし<(体力) = [0]> なら
[負け v]の音を鳴らす
[すべて v]を止める
でなければ
[攻撃 v]を送る
end
  • 実行するスクリプトを場合によって変える — 変数が指定した値と同じときはイベント発生、違うときは別のイベントが発生
もし <(答え) = [5]> なら
[正解!] と (2) 秒言う
でなければ
終わるまで [任務失敗 v] の音を鳴らす
[すべて v]を止める
end
  • 状況(たとえば変数の値)によって結果が変わるスクリプト
もし <[#7092be]色に触れた?> なら
 [水を見つけたぞ!]と言う
でなければ
  [ ]と言う
end

別のブロックによる表現

詳細は「代用ブロック一覧」を参照

このブロックの動作は、次のようにブロックを組んだ場合と同じである:

  • 代用1
 [アクション v] を (0)にする
もし <条件> なら
  [アクション v] を (1)にする
 . . . //条件が真(はい)のときの処理
end
もし<(アクション) = (0)> なら
 . . . //条件が偽(いいえ)のときの処理
end
  • 代用2
[もし文 v]を受け取ったとき
もし <条件> なら
. . . // 条件が真(はい)のときの処理
 [続行 v]を送る
 [このスクリプト v]を止める
end
. . . // 条件が偽(いいえ)のときの処理
 [続行 v]を送る

[続行 v]を受け取ったとき
. . .
  • 代用3
もし <条件> なら
...//条件が真(はい)のときの処理
end
もし < <条件>ではない> なら
...//条件が偽(いいえ)のときの処理
end
Warning メモ: 最後の代用方法は、1つ目のもし () ならブロックの中で、条件の結果が偽(いいえ)になるような処理をしていない場合だけ機能する。

提案

複数のScratcherから、与えられた条件が真なら1つめの値、偽なら2つめの値を返す値ブロックを取り入れるよう提案がなされている。[1]

(もし <> なら [] でなければ []::operators)

もしも実現すれば、 これは演算 カテゴリーのブロックとなるだろう。

mod版Scratchの中には、このようなブロックが存在するものもある(例:Insanity)。

関連項目

出典

  1. scratch:discuss/topic/33995