続いてボールの動きを2次元に拡張します。これまではボールを水平方向に動かして左右の壁で跳ね返らせていましたが、今度はボールを斜め45度に動かして上下の壁でも跳ね返るようにします。ちょっと複雑になりそうですが実は非常に簡単です。横方向(X方向)のブロックをそのまま残しつつ、同じ内容の縦方向(Y方向)のブロックを追加するだけです。

変数「posY」(position Y)、「spdY」(speed Y)を新たに作成して、図4-7を参考にプログラムを完成させてください。「円を塗りつぶし」ブロックの「Y」のところを「posY」に、また「画面幅」を「画面高さ」に変更するのを忘れないでください。プログラムの中で壁に当たって跳ね返るところもボールを移動させるところも、横(X)方向と縦(Y)方向でまったく独立に互いに無関係にコントロールしていることを確認しましょう。ゲーム機にアップロードして、ボールが斜め45度に動いて四方の壁できちんとバウンドすることを確認してください。

図4ー6 円の2次元運動(実行画面)

図4ー7 Y方向の動きを追加 プログラム

プログラムが少し長くなってきましたので、「関数」というものを使って見栄えを整えます。関数は、ひとまとまりの仕事を誰かに頼んでやってもらうようなイメージです。

「関数」カテゴリーから一番上のブロックをドラッグして「なにかする」となっているボックスを「bounceBall」に変更します。これがこの関数の名前となります。そして「ループ」の中のボールをバウンドさせている部分(「もし~実行」のかたまり)を丸ごと「bounceBall」のブロックの中に移動します。移動元には「関数」カテゴリの中にできている「bounceBall」ブロックを接続します。これは、ループの中から関数「bounceBall」を呼び出している、と表現します。

図4ー8 関数「bounceBall」プログラム

「MyGame」ボードに書き込んで同じ動作をすることを確認してください。

インデックス
4-(3)パドルを追加