プログラミングドリル

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

Scratch先生
Scratch先生

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

「スクラッチでプログラミング009」では、スプライトが歩いているように見えるプログラムを作りました。

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

スポンサーリンク

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

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

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

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

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

「スクラッチでプログラミング009」で作ったこちらのプログラムを、動画のような動きをするには、どのようにプログラミングすればいいでしょうか?

ヒントは、前回作ったプログラムと動画の動きで違うところはどこでしょうか?

その違うところが、新しく追加するプログラムです。

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

こちらの動画では、スプライト「ねこ」が右に動きながらコスチュームが切り替わっていましたよね。

スプライトを動かすブロックと言えば、いくつかありましたが覚えていますか?

 

これまで紹介したスプライトを動かすブロックは、「〇歩動かす」ブロックと「x座標を〇ずつ変える」ブロックがありました。

どちらかのブロックを使うと、スプライト「ねこ」が、右に動きながらコスチュームが切り替わるプログラムが作れます。

こちらが、スプライト「ねこ」が、右に動きながらコスチュームが切り替わるプログラムの例です。

「〇歩動かす」ブロックと「x座標を〇ずつ変える」ブロックの位置は、「ずっと」ブロックの中であれば、どこでも問題ありません。

なぜかというと、プログラムの処理のスピードは、めちゃくちゃ速いからです。

3つのブロックの並びのパターンは、こちらの6パターンあります。

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

6つのスプライトを使って、それぞれの動きを確認したのがこちらの動画です。

どのスプライトが、どのパターンか分かりますか?

分かりませんよねw

どのパターンでも動きに問題はありませんが、上から下へ順番にプログラムが処理されることを意識してブロックを並べてください。

「〇歩動かす」ブロックは、初期設定を!

「〇歩動かす」ブロックを使う場合は、必ず「向き」に注意してください。

「〇歩動かす」ブロックは、スプライトが現在向いている向きに、指定した歩数だけ動かすブロックでしたよね。

スクラッチを開いた初期の状態では、向きは「90」度に設定されています。

スプライトの向きは、ブロック以外に、スプライトのパラメーター「向き」からも変更できました。

向きを変えてしまうと、違う動きをしてしまいます。

自分は絶対に誤って向きを変えたりしないと思っても、キミたちが作ったゲームを遊ぶ子供たちが、向きを変えてしまうかもしれません。

そうならないために、プログラミングの世界では、最初に「初期設定」をします。

初期設定とは、プログラムを開始するときに、最初に決まった値を設定するためのものです。

もしも、ゲームの途中で、遊んでいるユーザーが「向き」や「座標」を意図的に変えたとしても、初期設定をしておけば、プログラム開始時にすべての設定が元にもどります。

こちらは、初期設定の1例で、2つのブロックを初期設定しています。

まず1つ目は、「〇度に向ける」ブロックの〇に「90」を設定しています。

これで、向きを変えられたとしても、プログラム開始時に向きを90度に設定しているので、必ず右へ動きます。

2つ目は、「x座標を〇、y座標を〇にする」ブロックで、中心の座標「x座標:0」「y座標:0」を設定しました。

最初から座標も初期設定しておけば、必ずスタート地点を決めることができます。

このような「初期設定」は、トリガーのすぐ下に、設定するようにしましょう。

右向き矢印キーが押されたなら

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

「スプライトを右に動かすプログラム」はすでに完成しているので、あとは、「右向き矢印キーが押されたなら」の部分だけが足りません。

「なら」という言葉に、何か見覚えありませんか?

「もし◇なら」のように「もし」「なら」の言葉がでてきたら、「分岐処理」でしたよね。

こちらの例では、「もし◇なら▢でなければ」ブロックを使って、「〇ならAの道へ、〇でなければBの道へ」と条件をつけていました。

今回のプログラムをスクラッチのブロックの言葉に置き換えると、このようになります。

もし<右向き矢印キーが押された>なら、スプライトを右に動かす

今回のプログラムでは、「もし◇なら▢でなければ」の「▢でなければ」の条件がありません。

今回のプログラムのように「もし◇なら〇する」だけのプログラムを作りたいときは、「もし◇なら」ブロックを使います。

「もし◇なら」ブロックを使ったプログラムの流れは、このようになります。

「もし◇なら▢でなければ」ブロックと同じように、「Aの道」「Bの道」に分かれるのは一緒ですが、「Bの道」を通ったときは、何もしません。

条件を満たした場合だけ、ブロックを処理させたいときは、「もし◇なら」ブロックを使いましょう。

「もし◇なら」ブロックは、◇の条件を満たしたときに、「もし◇なら」ブロックの中のブロックを実行します。

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

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

もし右向き矢印キーが押されたなら、スプライトを右に動かすプログラム
こちらのプログラムにするには、「もし◇なら」ブロックをどこに入れたらいいでしょうか?

考えてみましょう。

「もし◇なら」ブロックをどこに入れたらいいか、分かりましたか?

分からなかった子は、まず「もし◇なら」ブロックの中に、どのブロックが入るのか考えると分かりやすいです。

分からなかった子は、もう一度考えてみましょう。

「もし◇なら」ブロックをどこに入れたらいいか分かりましたか?

もし右向き矢印キーが押されたなら、スプライトを右に動かすプログラム
「右向き矢印キーが押された」条件を満たしたときだけ、スプライトを右に動かすプログラムを実行させるので、「もし◇なら」ブロックの中には、スプライトを右に動かすプログラムを入れます。

この状態で、プログラムの流れを確認すると、このようになります。

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

ずっと右向き矢印キーが押されたかどうか、チェックしなければいけないので、右側のプログラムを、左側のプログラムのどこに入れればいいか分かりますよね?

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

すべてのブロックをくっつけた、プログラムの流れはこのようになります。

パッと見ると、なんだか難しそうに見えますが、上から順に1つずつ見ていくと、どのようにプログラムが流れているか分かりますよね?

最後に、「もし◇なら」ブロックの◇に「右向き矢印キーが押された」か調べるブロックを入れたら完成です。

何かを調べるときのブロックは、「調べる」ブロック群にまとめられています。

先に答えをいうと、キーボードのキーが押された調べるには、「〇キーが押された」ブロックを使います。

「〇キーが押された」ブロックの▼をクリックすると、ドロップダウンリストが現れますので、その中の「右向き矢印」を選択します。

あとは、「もし◇なら」ブロックの◇に「右向き矢印キーが押された」ブロックを入れたら完成です。

プログラムが完成したら、緑の旗をクリックして、「右向き矢印」キーを押してみましょう。

「右向き矢印」キーは、一般的にテンキーの横か、キーボードの右端に配置されています。

「▶」や「→」など矢印になっているキーが、「右向き矢印」キーです。

「右向き矢印」キーを押したら、スプライトが右へ動きましたか?
何も押していない時は、動きませんよね。
「右向き矢印」キーが押されたときと、押されていないときのプログラムの流れは、この通りです。
「条件」で、プログラムの流れが分岐しているのが、分かりますよね。
この「条件」に、「〇キーが押された」ブロックを使いましたが、もう少し詳しく説明します。
プログラムの流れの「条件」の両側に、「真(true)」「偽(false)」と書かれているのが分かりますか?
「〇キーが押された」ブロックは、指定したキーが押されたときに「真(true)」になって、押されていないときは「偽(false)」になるブロックです。
試しに、「右向き矢印」キーを押している時と押していない時に、「〇キーが押された」ブロックをクリックしてみましょう。
こちらのように、押していない時は「偽(false)」に、押している時は「真(true)」になります。
この「真(true)」と「偽(false)」になることを、プログラミングの世界では、「値を返す」あるいは、「真偽値を返す」と言います。
そして、「もし◇なら」ブロックの「条件」は、この真偽値で、条件を満たしているか判定します。
  • 真(true)・・・条件を満たしている
  • 偽(false)・・・条件を満たしていない
   
他にも、「制御」ブロック群には、条件を使うブロックがあり、こちらも同じように真偽値で、条件を満たしているか判定します。
条件を使うブロックは、「真偽値」で判定していることを覚えておきましょう。

ちなみに、プログラミングの世界では、「真(true)」と「偽(false)」を数値に表すこともできます。

  • 真(true)・・・1
  • 偽(false)・・・0

こちらの「0」「1」の数値(真偽値)を使ったプログラミング方法は別の機会で紹介しますので、真偽値は数値で表すことができることも覚えておきましょう。

まとめ

Scratch先生
Scratch先生

「分岐処理」の流れをイメージできましたか?

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

今回は、特にプログラムの流れについて詳しく説明しました。

プログラムの流れの基本は、こちらの3つの処理だけでしたよね。

  • 順次処理・・・プログラムを上から下へ順番に処理
  • 分岐処理・・・プログラムの流れを分岐する処理
  • 反復処理・・・プログラムの流れを繰り返す処理

どんなに長いプログラムでも、この3つの処理が組み合わさってできています。

今回のプログラムでは、3つの処理をすべて組み合わせてプログラミングしました。

プログラムの流れに慣れてくれば、ブロックを並べる前に、プログラムの流れがイメージできます。

プログラムの流れがイメージできたら、あとはブロックをくっつけていくだけです。

何回もプログラミングに挑戦すれば、分かってきますので、プログラムの流れをもう一度確認して、次の「スクラッチでプログラミング011|プログラムを考える③」へ進みましょう!


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

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

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