スクラッチサイトにアクセスして、サインインしよう。
(まだ自分のアカウントを作っていない人は、「スクラッチのはじめ方」にしたがってアカウントを作ってね)
why_programming_4のスタジオ(※NHKサイトをはなれます)を見てみよう。
why_programming_4のスタジオで、プロジェクト「4_1_ライントレース」を選び、「中を見る」、次に「リミックス」をおして、自分のアカウントにコピーしてね。
(コピーの仕方は「自分の作品を作ろう!リミックス(改造)をする」も読んでね)
今回はソリを道に沿って自動運転させるプログラムを作っていくわよ。
まずは、スペースキーをおしたら、道に関係なくずっとまっすぐ進むようにプログラミングして。
このようになったかしら?
実行してみると、ななめ右上にまっすぐ進むわよね。
道がどこにあるのか検知するために目の働きをするセンサーを用意しましょう。
今回は「調べる」の中にある「□色が□色に触(ふ)れた」ブロックを使うわね。
ブロック中の□をクリックして、ステージ上の絵をクリックすると、□の中に色が入るわよ。それぞれソリの赤い部分、道の白い部分の色を入れてね。
このブロックで、ソリの「赤色が」、道の「白色に」触れたかどうかを調べるの。
すると
・触れている =ソリが道に乗っている
・触れていない=ソリが道に乗っていない
と、ソリが道に乗っているかいないかが分かるわね。
ソリが道に乗っているかいないかで、場合わけして命令を変えることができれば、うまく自動で進むようにプログラミングできそうね。
ここで使えるブロックが、「もし○なら~ でなければ~」ブロック。
○の部分にさっきのセンサーにした「赤色が白色に触れた」を置く。
これで、
・ソリが道に乗っている場合は どうするか
・そうでなければ(ソリが道から外れた場合は) どうするか
というふうに、場合わけして命令を変えることができるのよ。
では、それぞれの場合にどうするかを考えよう。
上の絵は、ソリが道に乗っている場合。そのまま(ブロックなし)で良さそうね。
下の絵は、ソリが道から外れた場合。ソリの向きがもどるように、右に回転させれば良さそうね。
「もし○なら~ でなければ~」ブロックをこのようにして、最初のずっとの中に入れよう。
では、実行して確かめよう!
最初のカーブはうまく右に曲がったけど、次のカーブではクルっと回って戻ってきたね。
最初のカーブと次のカーブでは向きがちがうから、うまくいかなかったようね。
・道の左側に出たときは ソリを右回転する
・道の右側に出たときは ソリを左回転する
というようにプログラムを変えなきゃいけない。これはちょっと難しいね。
今回はジェイソンのアイデアをしょうかいするわね。
「もし『赤色が白色に触れた』なら」の下に、「左に10度回す」ブロックを入れるの。
ソリが道に乗っているとき 左に10度回す。
とにかくソリは左回転しながら進む。
道から少しでも外れたら、右回転してもどる。
これをくり返すことで、道の左はしにそって走っていくの。
こうすれば、道の右側に外れることはないわ。すごいアイデアね!
- センサーからの情報をもとに、場合わけして命令すると、複雑なことが自動で実行できる
- 場合わけして命令を変えるには、「もし○なら~ でなければ~」ブロック を使う
ライントレースの方法は、ジェイソンのアイデア以外にもいろいろあるよ。
自分なりの方法を考えてプログラミングしてみよう。