スクラッチの手引き

スクラッチで学ぶ条件分岐 〜「もし〜なら(IF文)」の使い方〜

最終更新日 2025年4月27日 by toytune

スクラッチはアメリカの大学、MIT(マサチューセッツ工科大学)メディアラボで開発されたビジュアルプログラミング言語です。

はじめに

どんなプログラミングにも、基本となる3つの処理があります。

  • 順次処理:上から順番に命令を実行する
  • 分岐処理:条件に応じて、実行する命令を変える
  • 反復処理:決められた回数だけ、または条件が合うまで、命令を繰り返す

これらの考え方は、黒い画面に文字を打ち込む「テキストプログラミング」でも、ブロックを組み合わせて作る「スクラッチ」のようなビジュアルプログラミングでも同じです。

この中でも今回は、「もし〜なら」といった**分岐処理(IF文)**を取り上げます。

たとえば、

  • 「もし青い色に触れたら、10歩動く」
  • 「もしクモにぶつかったら、スコアを1減らす」

といったように、条件に応じて命令を切り替えるのが分岐処理のポイントです。

この記事では、スクラッチでの分岐処理の使い方をわかりやすく解説していきます。

「もし〜なら」と「もし〜なら でなければ」のブロックを見てみよう

スクラッチには分岐処理を行うブロックが2つあります。

  • 「もし〜なら」
  • 「もし〜なら でなければ」

2つとも条件を指定するブロックで、上部にある「もし〜なら」のところに条件を入力します。ただそのまま「〜」のところに条件を入れることはできません。別の六角形のブロックに条件を入れて、その六角形のブロックを「もし〜なら」に入れることにより条件を指定します。

六角形のブロックで条件をいれる

今度は、指定した条件に合った場合、または合わなかった場合の処理を入れる部分をみていきます。

条件を入れるすぐ下の部分に指定した条件が合った場合、実行したい挙動のブロックを入れます。ここに入れることができるブロックであれば、どのような処理も入れることができます。

また、画像右側のブロックは、条件が合わなかった場合の挙動を「でなければ」の下に入れることができます。

条件に一致した場合の挙動のブロックをいれる。でなければの中は条件が一致しなかった場合の挙動のブロックをいれる

このように「もし〜なら」または「もし〜なら でなければ」のブロックには、振り分けたい条件と、その条件に合った場合(一致した場合)の挙動の処理、合わなかった場合(一致しなかった場合)の挙動の処理を入れるようになっています。

条件となる「六角形のブロック」を確認しよう

「もし〜なら」ブロックの「〜」の部分には、六角形の形をしたブロックをはめ込みます。この六角形ブロックは、条件を表すためのブロックです。

たとえば次のようなブロックがあります:

  • 「スペースキーが押された」
  • 「スプライトが色に触れた」

画面左のコードの中から「調べる」をクリックしてください。
もし、コードが表示されていなければ、左上の「コード」のタブをクリックしてください。

ここでは、「〜に触れた」「〜が押された」など、条件となる六角形のブロックがあることがわかります。「色に触れた」というのは、ステージ画面で「スプライトが触れた色が何であるか?」を判定することができます。それ以外にも私たちの手元の「マウス」や「キーボード」を押したタイミングも判定できることがわかります。

調べるをクリックするともし〜ならの六角形にいれることができる条件ブロックが表示される

もう一つ、条件となる六角形のブロックは、「演算」の中にあります。ここでは、数字を比較したり、複数の条件を「〜かつ〜」「〜または〜」で判断することができます。また、「〜かつ〜」「〜または〜」は、直接数値や文字を入力するのではなく、六角形のブロックをさらに入れるようになっています。

  • 〜かつ〜・・・・「〜」に入る条件がどちらも一致している場合
  • 〜または〜・・・「〜」に入る条件のどちらか一方が一致している場合

その他にも「〜に〜が含まれている」という部分一致を判定したり、「〜ではない」というような否定で判定することもできます。

演算をクリックするともし〜ならの六血系にいれることができる条件ブロックが表示される

実際に使ってみよう(例:壁に当たったら向きを変える)

それでは実際に、条件分岐を使った例を見てみましょう。

たとえば、スプライトが画面の端(壁)に当たったら跳ね返る、という動きを作りたいとします。このとき使うのが、次のようなブロックです。

  • 条件:端に触れた
  • 処理:もし端に触れたなら、跳ね返る

条件に一致した場合の挙動のブロックを見ていきます。長方形のブロックの左側が下に少し出っ張っているものがそれに当たります。画像では、「動き」と「見た目」にある挙動のブロックとなります。

動きをクリックすると動きのブロック、見た目をクリックすると見た目に関するブロックが表示される

続けて音声の挙動をしてくれる「音」、分岐処理自体がある「制御」の中にも挙動を制御するブロックがあることがわかります。

音をクリックすると音に関するブロック、制御をクリックすると制御に関するブロックが表示される

直接スプライトの挙動には関連しませんが、「変数」も入れられます。条件によって「変数」の数値を変更していくことができるということです。これは、ゲームのスコアなどを条件によって足したり、減らしたり、表示したりなどを実行することができます。

変数をクリック

分岐処理を作ってみよう

分岐処理で使うブロックを一通り見てきたので、実際にそれらを使って分岐処理を作ってみたいと思います。今回は、キーボードのカーソル(矢印のキー)のボタンの条件が一致していたら、挙動を発動させるものを作ります。具体的には、右を押せば右に進む、左を押せば左に進むというものを作っていきます。

まず「調べる」のところから「〜キーが押された」をドラッグしてきます。次に「〜」のところをクリックし、「右向き矢印」をクリックで選択します。

調べるからスペースキーが押されたらをドラッグしスペースキー矢印のところをクリック、右向き矢印のところをクリック

今後は、同じように「もし〜なら」と、「10歩動かす」のブロックをドラッグしてきます。

図のように「もし〜なら」の六角形の部分には、条件となる「右向き矢印キーが押された」を入れます。「もし〜なら」の中には、挙動となる「10歩動かす」を入れます。

もし〜ならの〜に右向き矢印キーが押されたをいれ条件にし、もし右向き矢印キーが押されたならの中に10歩動かすのブロックを入れ挙動を決める

できたら、ブロックの「なら」の文字あたりで右クリックします。プロパティメニューが表示されますので、その中から「複製」をクリックします。

もし右向き矢印キーが押されたならの右端を右クリックし表示されるプロパティメニューから複製をクリック

「複製」したブロックのすぐ下のあたりで、クリックすると同じ構成のブロックが複製されます。

同じ構成のブロックが複製された

 今は、同じ「条件」同じ「挙動」となるため、複製した方の条件を変更してみます。「右向き矢印」をクリックして、「左向き矢印」をクリックで選択します。

複製された方の右向き矢印をクリックして左向き矢印へ変更

変更したら、複製した方をドラッグで上下をくっつけます。

まだこれだけでは実際に動かすことはできませんが、分岐処理として、右矢印キーを押したら右に10歩動き、左矢印キーを押したら左に10歩動く条件と挙動を作れました。

ドラッグして2つのブロックをくっつける

分岐処理とは関係なく、続けたい処理があれば「もし〜なら」の下にくっつけることもできます。下記画像の場合、「もし端に着いたら、跳ね返る」というブロックをくっつけています。これは、対象のスプライトが、ステージの端についた場合は、跳ね返るという処理です。「もし〜なら」という処理の中に入れなくても、その条件を満たしたら挙動するブロックも存在します。

もし端に着いたら、跳ね返るのブロックをドラッグし一番下にくっつける

せっかくここまで作成してきたので、実際に動くように仕上げたいと思います。下記2つのブロックをドラッグしてきてくっつけます。

  • 「イベント」から、「の旗を押されたとき」
  • 「制御」から「ずっと」
旗が押されたときをドラッグ、ずっとをドラッグし2つのブロックをくっつける

分岐処理で作成したものを「ずっと」の中にドラッグでまるごと入れます。

これで、の旗を押したあと、カーソルの「右」と「左」を押すとその方向にスプライトが進みます。

ずっとの中に先のブロックの塊をドラッグでいれる

「〜かつ〜」「〜または〜」と「比較」のブロックを使ってみよう

今度は、緑のブロック「〜かつ〜」「〜または〜」と「比較」のブロックを確認し、実際に使っていきたいと思います。

冒頭でも説明していますが、もう一度確認します。

  • 〜かつ〜・・・・「〜」のに入る「六角形」の左側と右側のどちらも一致している場合、つまり「AND条件」
  • 〜または〜・・・「〜」のに入る「六角形」の左側と右側のどちらかが一致している場合、つまり「OR条件」
  • 〜ではない・・・「〜」に入る六角形が一致しない場合、つまり「NOT条件」
  • 〜に〜が含まれる・・・例えば「りんご」という文字の中に「り」という文字が含まれている場合
〜かつ〜は左と右のどちらも条件に合っている場合(AND)、〜または〜は左と右のどちらかが条件にあっている場合(OR)、〜ではないは入力した内容が条件にあわない場合(NOT)。りんごにりが含まれるとした場合、左の内容の中に右のものが含まれている場合になる

今度は比較を確認していきます。

  • 〜 > 〜・・・左側の数が、右側より大きい場合
  • 〜 < 〜・・・左側の数が、右側より小さい場合
  • 〜 = 〜・・・左側の数や文字などが右側と一致した場合
〜>50は左が右より大きい場合、〜<50は左が右より小さい場合、〜=50は左と右が同じ場合

では実際に「〜または〜」を実際に使ってみます。

下記図の例では、対象のスプライトが「赤色」に触れた場合、または「マウスが押された」(クリックされた場合)の条件になります。「または」なので、この場合は、「どちらかの条件が一致したら発動」ということになります。

〜または〜に赤色に触れたとマウスが押されたをいれるとどちらかの条件を満たす場合になる

「もし〜なら」は、「でなければ」が続くブロックもありました。ここではそのブロックを使ってみます。

先ほど作った条件のブロックを「もし〜なら」の六角形のところに入れます。すぐ下(中)にあたる挙動の部分は、この「赤色に触れた」場合か、「マウスが押された」(クリック)場合の挙動を入れることになります。

「でなければ」のすぐ下(中)は、逆の条件の場合ということになるので、「赤色に触れていない」または「マウスが押されていない」(クリックされていない)場合の挙動を入れるということになります。

もし〜ならの〜に赤色に触れたまたはマウスが押されたならをいれすぐ下にはその条件にあっているときの挙動をセットし、でなければには条件を満たさない場合の挙動をいれる

ここでは、条件を満たした場合は、「こんにちは!」という吹き出しがでて、逆に満たさない場合は、「音の効果をなくす」つなり音がなっていた場合、音を消すという挙動が発動するというブロックを入れています。

条件が満たす場合に「こんにちは!」というのブロックをいれ、でなければいは条件を満たさない場合のものとして音の効果をなくすをドラッグ

変数を「もし〜なら」や「もし〜なら」に入れてみよう

六角形のブロックの中には、直接数字を入れることもできますが、ブロックも入れることができます。下記図ではでは「変数」を入れています。

「変数」を入れる例として、ゲームのスコアなので、条件を満たしたら、次の難易度に上がるといった処理に使えそうです。

変数=50とすることで直接、値を入力する以外にも変数などのブロックもいれることが可能

また、「もし〜なら」の挙動の部分には、さらに「もし〜なら」を入れることができます。最初の条件に一致したら、次の条件に進むという処理になります。下記図の場合、「変数が50ではない」場合、「もし〜に」へ進むということになります。

もし〜ならの中にもし〜ならを入れ、されに条件を追加することも可能

今度は、「もし変数が50でない」場合、次の「もし〜なら」の処理に進みます。下記図では、「もしスペースキーが押されたなら」を入れています。ここまでのこの分岐処理は下記の順序で進みます。

  1. 「変数が50でない」場合は、「スペースキーが押されていているか」の判定に進む
  2. 「スペースキーが押されているか」で「スペースキーが押されている」場合、挙動の処理を発動させる
最初のもし変数=50でないならにしている場合、その条件にみたす50以外の場合、中のもしスペースキーが押されたならの条件にすすむ

最後に挙動のブロックを「次の背景にする」を設定します。ここまでをまとめると、下記の順序で進みます。

  1. 「変数が50でない」場合は、「スペースキーが押されていているか」の判定に進む
  2. 「スペースキーが押されているか」で「スペースキーが押されている」場合は、一致した場合の挙動に進む
  3. 「次の背景にする」が作動し、設定されている次の背景に切り替わる
もしスペースキーが押されたならの中に次の背景にするをドラッグしたら場合、変数が50でない場合でスペースキーが押されたら次の背景に切り替わる挙動になる

ちなみにこのような「もし〜なら」の中に「もし〜なら」を入れることを「入れ子」や「ネスト」という風に呼びます。このような「入れ子」「ネスト」の処理は、スクラッチに限らずテキストプログラミングでも頻繁に出てきます。

まとめ

今回は、スクラッチで使える**分岐処理(条件分岐)**の基本、「もし〜なら」ブロックと「もし〜なら でなければ」ブロックの使い方を紹介しました。

条件に応じて命令を分けることで、より複雑で面白い動きを作ることができます。たとえば:

  • スコアが一定以上になったらゲームクリア
  • 敵に当たったらゲームオーバー
  • 正しい答えを選んだら「正解!」と表示する

といったように、ゲームやクイズにも応用できます。

スクラッチでいろんな条件を試しながら、分岐処理を使いこなしてみてください!