魚をつかまえたかどうかどうやって判断しているの?①
ゲームでは、網に魚がふれるとその魚をつかまえることができたね。
プログラムでは、どうやって「つかまえた」を判断しているのかな?
魚のスプライトの下のブロックに注目してみよう!
この部分では、『もしブロック』であみと魚がふれたことをチェックしているよ!
もしブロックでは、プログラミングの中では重要な考え方である「条件分岐(じょうけんぶんき)」ということをやっているんだ。
条件分岐(じょうけんぶんき)って何?
条件分岐は、条件が合っているか・合っていないかで行う命令を変える動きのこと。
条件によって命令が分岐するんだ。
例えば、条件が「おなかがすいた」だったら、条件にあっている、つまり、お腹がすいていた場合は「ごはんをたべる」、そうでない場合は「ごはんをたべない」って感じ!
Scratchでは、もしブロックが条件分岐を行うブロックになっていて、2つのもしブロックがあるよ。2つの違いは、「条件が合っていないとき」の動き。
左のもしブロックでは、 ①の部分に、条件が入って②の部分には条件が合っているたときに行うブロックを入れるよ。
右のもしブロックでは、 ①の部分に、条件が入る。次に、②の部分には条件が合っているたときに行うブロックを入れるよ。最後に、③の部分には条件が合っていないときに行うブロックを入れるんだ。
このもしブロックでは、条件が合っていないときだけに行う命令を作ることができるんだ!
魚をつかまえたかどうかはどうやって判断しているの?②
ここで、魚のスプライトのプログラムに戻って、もしブロックを見てみよう。
このもしブロックでは、もしあみと魚がふれた、つまり魚をつかまえたときに
・音を鳴らす
・変数[消えた魚の数]を1つふやす
・スコアを変える
という3つの命令を行っていることになるよ!
ここで、スコアを変えるというブロックは元々Scratchに用意されているブロックではない。関数というものを使って新しく作ったブロックなんだ!
関数って何?
関数は、複数のブロックの固まりを1つの新しいブロックとして使えるようにするためのものだ。 関数は、新しいブロックの定義という形で複数のブロックの固まりと結び付ければ、 何度でも新しいブロックを使えることができる。 これにより、長く大きいブロックの固まりをひとまとめにすることができるので、 プログラムが見やすくなったり、何度も長くブロックを組み合わせる手間が減ったりするよ。
関数には、定義(ていぎ)する部分と使う部分がある。
新しいブロックの定義という形で複数のブロックの固まりと結び付ければ、
何度でも新しいブロックを使えることができる。
関数は呪文のようなものなんだ! いくつかの呪文(ブロック)からできる魔法(ブロックのかたまり)を1つの呪文(ブロック)で 発動するように定義することで、 プログラムが見やすくなったり、何度も長くブロックを組み合わせる手間が減ったりするよ。