プログラミングドリル

スクラッチでプログラミング011|歩くプログラムを考える③

Scratch先生
Scratch先生

こんにちは、みなさん!
Scratch先生です。

「スクラッチでプログラミング010」では、右向き矢印キーが押されたなら、スプライトを右に動かすプログラムを作りました。

今回は、そのプログラムに左向き矢印キーが押されたなら、スプライトを左に動かすプログラムを追加していきます。

スポンサーリンク

左向き矢印キーが押されたなら、スプライトを左に動かすプログラムを作ろう!

プログラミングチャレンジ1
Scratch先生
Scratch先生

早速、プログラミングチャレンジ!

Scratch先生から子供たちへの挑戦状です!
クリアできるかな?

左向き矢印キーが押されたなら、スプライトを左に動かすプログラムを作っていきますが、すでに君たちはそのプログラムを作る知識を身に付けています。

ここまで覚えたことを思い出して、左向き矢印キーが押されたなら、スプライトを左に動かすプログラムを作ってみましょう!

分からない子は、少しずつヒントを出していきますので、少しずつ読み進めてください。

プログラミングできましたか?

もしも、全体のプログラムの流れのイメージがつかない子は、小さなプログラムを、まずは作ってみましょう。

小さなプログラムとは、左向き矢印キーが押されたなら、スプライトを左に動かすプログラムそのものです。

赤い枠線で囲っている範囲は、右向き矢印キーが押されたなら、スプライトを左に動かすプログラムですよね?

これの左向きバージョンを、まずは作りましょう。

本体のプログラムのどこに入れるかは、まだ考えなくてよいので、本体のプログラムにくっつけずに、単体で左に動かすプログラムを作ってみましょう。

プログラミングできましたか?

右向きと左向きのプログラムが似ていることに気づいて、左向きバージョンを作るときに、「複製」を使った子は、よく覚えていましたね!

忘れていた子は、もう一度思い出してね。

右向きと左向きのプログラムは、向きが違うだけで、「動く」「コスチュームを切り替える」は、同じ動作ですよね。

同じブロックを使う場合は、ブロックの「複製」を使うと、プログラミングのスピードが速くなると、「スクラッチでプログラミング008|ブロックの結合・複製・削除方法」で説明しました。

覚えていたかな?

覚えていない子は、もう一度確認しておきましょう。

まず、コピーしたいプログラムの一番上のブロックを右クリックし、メニューが現れたら「複製」をクリックします。

コピーされたプログラムは本体のプログラムにくっつけずに、単体で置きましょう。

まずは、単体のプログラムを左向きのプログラムにしていきます。

この単体のプログラムで、左向きに変える部分どこか分かるかな?

ブロックの追加や削除はせずに、今あるブロックで変更する部分だけ修正してみましょう。

プログラミングできましたか?

今あるブロックで変更する部分だけ修正すると、このようになります。

まずは、「〇キーが押された」ブロックの▼から、「右向き矢印」を「左向き矢印」に変えます。


次に、左に動かすので、「〇歩動かす」ブロックの〇を「-10」に変えます。

スプライトの座標のことを覚えていますか?

左に動かしたいときは、「(-)マイナス」の数値にするんでしたよね。

修正できたら、「左向き矢印」キーを押した状態で、単体のプログラムをクリックしてみてください。

また、「左向き矢印」キーを押していない状態でも、クリックして動作を確認しましょう。

ちなみに、「左向き矢印」キーは、「右向き矢印」キーと同じ場所にあります。

「上向き矢印」「下向き矢印」キーも同じ場所にまとめられていますので、覚えておきましょう。

「左向き矢印」キーを押した状態で、単体のプログラムをクリックすると、左へ動きましたよね。

そして、「左向き矢印」キーを押していない状態でクリックすると、何も反応しなかったはずです。

単体のプログラムの流れは、このようになります。

「左向き矢印」キーを押していない状態でクリックすると、何も反応しなかったのは、条件が「偽(false)」の道を通ったからです。

これで左に動かすことはできましたが、スプライトが後ろ向きのまま左に動いていて不自然ですよね。

スプライトを左に向かせて歩かせるには、どのようにプログラミングしたらよかったでしょうか?

こちらは、以前説明していますので、プログラミングに挑戦してみましょう!

プログラミングできましたか?

スプライトの向きを設定するのは、「〇度に向ける」ブロックでしたよね。

「左」向きにするには、〇に「-90」を設定します。

単体ブロックのどこに入れたらいいか悩んだら、実際に自分の体がどうやって日常動いているか確かめてみましょう。

右を向いた状態で、左に歩くと下のような順番に体が動きませんか?

  • 左を向く
  • 右足を1歩前に出す(歩く)
  • 左足を1歩前に出す(歩く)

プログラムでも同じような順番にブロックを並べていきます。

よって、「〇度に向ける」ブロックは、「〇歩動かす」ブロックの上に置きます。

「〇度に向ける」ブロックを入れたら、また「左向き矢印」キーを押した状態で、単体のプログラムをクリックしましょう。

すると、ここで問題発生です!

スプライトが逆さまになり、さらに右へ移動してしまいました。

  • 【問題1】スプライトが逆さま → スプライトを左に反転させて向きを変えたい
  • 【問題2】右へ移動 → 左に移動させたい

この2つの問題を解決するには、どのようにプログラミングしたらいいでしょうか?

ヒントは、逆さまにさせないブロックと、「〇度に向ける」ブロックは、スプライトが現在向いている向きに動くブロックです。

プログラミングできましたか?

まず、スプライトを反転させたいときは、「回転方法を▢にする」ブロックを使いましたよね。

「回転方法を▢にする」ブロックの▼から、「左右のみ」を選択します。

では、このブロックはどこに入れたらいいでしょうか?

左に向く前じゃないと逆さまになるから、「〇度に向ける」ブロックの上に置いた方がよさそうですよね。

ただ、「回転方法を▢にする」ブロックは一度実行すると、次に変更があるまで「左右のみ」の状態を維持します。

そのため、毎回「左向き矢印」キーを押すたびに、実行する必要もないブロックです。

最初の1回だけ設定するブロックは、「初期設定」に入れるのも1つの方法です。

どちらのプログラムも、同じ動きをするので、どちらが正解・不正解ではありません。

最初の1回だけ設定するブロックは、「初期設定」に入れるとルールを作っておけば、どこに入れるか悩む心配が減ります。

こちらでは、最初の1回だけ設定するブロックは、「初期設定」に入れるルールで、説明していきます。

なお、「初期設定」に入れる前に、一度「回転方法を▢にする」ブロックをクリックして、「左右のみ」に設定しておきましょう。

  • 【問題1】スプライトが逆さま → スプライトを左に反転させて向きを変えたい
  • 【問題2】右へ移動 → 左に移動させたい

さて、もう一つの問題は、右へ移動してしまう問題ですよね。

こちらは、「〇度に向ける」ブロックの特徴を理解すれば、すぐに解決する問題です。

「〇度に向ける」ブロックは、スプライトが現在向いている向きに動くブロックです。

「〇度に向ける」ブロックで「-90」度にしているので、スプライトの向きは左向きになります。

つまり、「〇歩動かす」ブロックの〇に「-10」を設定しているので、向いている左とは反対の右へ、動いてしまったということです。

よって、「〇歩動かす」ブロックの〇を「-10」から「10」に変更すれば、問題解決です!

これで、もう一度、「左向き矢印」キーを押した状態で、単体のプログラムをクリックしてみましょう。

今度は、うまくいきましたよね。

あとは、この単体のプログラムを本体のプログラムのどこに入れるかです。

これは、右向きのプログラムの時と同じように考えればいいです。

左向きのプログラムは、一度プログラムが実行されるとプログラムが終了してしまいます。

ずっと「右向き矢印」キーが押されたかどうかチェックするには、「ずっと」ブロックの中に入れましたよね。

こちらの左向きのプログラムも「ずっと」ブロックの中に入れます。

「ずっと」ブロックの中に入れるときは、右向きのブロック群の上でも下でもどちらでもOKです。

どちらでも同じようにプログラムが動きます。

くっつけたら、緑の旗をクリックして、「右向き矢印」「左向き矢印」キーを押して、左右に動くか確かめましょう!

何度か「右向き矢印」「左向き矢印」キーを押すと、どちらを押しても左にしか動かなくなりましたか?

こんなときは、焦らないで!

まず、「右向き矢印」「左向き矢印」キーのどちらがうまく動いていないか確かめます。

「左向き矢印」キーを押すと、左へコスチュームを切り替えながら歩いているので、問題ないですね。

「右向き矢印」キーを押すと、左へコスチュームを切り替えながら歩いていきます。

つまり、問題なのは、「右向き矢印」キーを押したときに、左を向いているということです。

ということは、左に向いているのを右に向けるようプログラミングすればいいですよね?

どのようにプログラミングすればいいか、考えてみましょう!

プログラミングできましたか?

まずは、全体のプログラムが、どのようになっているのか確認します。

左向きのプログラムでは、「〇度に向ける」ブロックで、「-90」度(左)に設定しましたよね。

しかし、右向きのプログラムでは、向きを設定していません。

つまり、「左向き矢印」キーを押すと、向きが「-90度」(左)のままになっているということです。

よって、右向きのプログラムに、「〇度に向ける」ブロックで、「90」度(右)に設定してあげれば、問題解決です。

「〇度に向ける」ブロックを入れたら、緑の旗をクリックして、確認してみましょう。

「右向き矢印」キーを押すと、ちゃんと右へ動きましたよね?

元のプログラムに、新たにプログラムを追加すると、こういったことがよく起こります。

元のプログラムがおかしくなったときは、おかしくなっている部分がどこなのか、しっかり確認して対応しましょう。

今回、左向きのプログラムを追加したプログラムの流れが、こちらです。

左のブロックのプログラムと見比べて、どのブロックが、どのプログラムの流れの部分なのかイメージできますか?

右のプログラムの流れを、いつも頭でイメージするようにしましょう。

ちなみに、「〇歩動かす」ブロックではなく、「x座標を〇ずつ変える」ブロックを使った場合は、このようなプログラムになります。

「x座標を〇ずつ変える」ブロックを使った場合でも、同じように左右の矢印キーで動きます。

一つ注意しなければいけないのは、左向きのプログラムでは、「x座標を〇ずつ変える」ブロックの〇に「(-)マイナス」の数値を設定している点です。

「x座標を〇ずつ変える」ブロックに、向きは関係ありません。

「x座標を〇ずつ変える」ブロックは、「x座標」を変えるブロックなので、左に動かすときは、「(-)マイナス」の数値を設定します。

ここが、「〇歩動かす」ブロックと「x座標を〇ずつ変える」ブロックの違いですので、覚えておきましょう。

「▢キーが押されたとき」ブロックとの違い

今回、「〇キーが押された」ブロックを使って、矢印キーで左右に動かしましたが、実はスクラッチには、1つのブロックで、同じように動作するブロックがあります。


それは、「イベント」ブロック群の「▢キーが押されたとき」ブロックです。

「▢キーが押されたとき」ブロックを▼をクリックすると「右向き矢印」がありますので、そちらを選択すると、「右向き矢印」キーを押すと、その下のプログラムが実行されます。

こちらを使うと便利ですが、一つ欠点があります。

それは、処理速度が遅くなることです。

百聞は一見に如かず。

実際に2つのプログラムの違いを確認してみましょう。

スプライト「ねこ1」には、「〇キーが押された」ブロックを使って、スプライト「ねこ2」(緑色のねこ)には、「▢キーが押されたとき」ブロックを使って、左右矢印キーで動くプログラムにしています。

動くプログラム自体どちらも同じです。

(▶をクリックして動画を確認してね)

こちらが、実際に左右矢印キーで動かした、2つのプログラムの違いです。

見てわかるように、「▢キーが押されたとき」ブロックを使ったスプライト「ねこ2」は、切り返しのときに動きがとまりカクカクしています。

「▢キーが押されたとき」ブロックを使うと、若干処理速度が遅くなるデメリットがあります。

また、プログラムの流れも分かりづらくなるので、こちらでは、「▢キーが押されたとき」ブロックは使わずに、「〇キーが押された」ブロックを使っていきます。

まとめ

Scratch先生
Scratch先生

左右の矢印キーで動くプログラミングの方法は、理解できたかな?

「スクラッチでプログラミング011」では、左向き矢印キーが押されたなら、スプライトを左に動かすプログラムを追加しました。

左右の矢印キーで動くプログラムができたよという子は、次の「スクラッチでプログラミング012|歩くプログラムを考える④」へ進みましょう!


【Step4】歩くプログラムに挑戦!

【Step3】スクラッチとプログラミングの基本知識

【Step1・Step2】スクラッチアカウント作成とログイン方法