テスト問題で「重力のジャンプ」と「速度一定のジャンプ」の違いが分かる!

キプロ

「小学校プログラミング教育 学習指導要領が学べるeラーニング」のテストページで出題する問題と解説の一例です
本問題を通して、「重力を考慮したジャンプ」と「速度が一定のジャンプ」の違いを理解できます

B-1 レッスン2:テスト問題4と解説

【問題】「カエルA」スプライトが重力を考えたジャンプをするプログラムはどれが正しいですか?

【回答】
重力を考えたジャンプとは、実際の重力と同じように落下速度を変化させることにより実現します。
そのためには「変数」を使います。「変数」を「y座標を(何か)ずつ変える」ブロックの引数に連結し、「変数」の値をマイナス方向に変え続けることにより、重力と同じように上方向への移動スピードは徐々に遅くなり、下方向への移動スピードは徐々に早くなります。

Aのプログラムは不正解です。

変数「yスピード」の値が「10」になったあと変数「yスピード」の値は変化せず「10」のままなので、「y座標を(yスピード)ずつ変える」ブロックを実行し続けると、「カエルA」スプライトは一定の速さで上方向に移動し続けてしまいます。

Bのプログラムは不正解です。

「(yスピード)を(-0.5)にする」は変数「yスピード」の値を「-0.5」にするブロックなので、「カエルA」は最初だけ上方向に「10」ピクセル移動したあと、下方向に「-0.5」ピクセルずつ移動し続けてしまいます。

Cのプログラムは正解です。

変数「yスピード」の値が「10」になったあと、変数「yスピード」の値は10.0→9.5→9.0→…→0.5→0.0→-0.5→…→-9.0→-9.5→-10.0と変化します。「カエルA」スプライトのy座標は、この値が変化する変数「yスピード」を引数とした「y座標を(yスピード)ずつ変える」ブロックにより変化するので、重力と同じように上方向への移動スピードは徐々に遅くなり、下方向への移動スピードは徐々に早くなります。