アップルの無償プログラミング学習ツール「Swiftプログラミング」でいっしょに遊ぼう 第4回
アップルの無償プログラミング学習ツール「Swift Playgrounds」アクションゲーム作り(準備編)
2020年09月27日 09時00分更新
ステップ3:1個のボールを穴の中でランダムに上下させる
このステップは、前のステップで実現したボールの動きを進化させるものです。これまでは、ボールは常に一定の速度で動いていましたが、ここではボールが穴の底に落ちるたびに、ランダムな速度を設定します。そのために手を加えなければならないのは、タイマーの中で、ボールの速度を設定している部分だけです。
・ボールが穴の底に届いた際に、乱数を使って決めた速度に設定する
・ボールが上端に届いた際には、既定の速度の符号だけを反転する
・プログラムを動かしてランダムな速度の動作を確認する
このステップでは、タイマーの中でもぐらに見立ててたボールの速度を表す変数、mVelを設定している部分だけを変更します。2ヵ所ありますが、両方とも変更します。
まずは、ボールのy座標が0以下になったとき、つまり、ボールが穴の底に着いたと想定した場合の速度の設定を変更します。これまでは、ここには単純に0.3を設定していました。それを、次のように変更します。
mVel = Double(arc4random_uniform(40)) / 100.0 + 0.1
ちょっと長くで意味不明と思われるかもしれませんが、簡単に説明すると、こういうことです。まず前回も出てきたarc4random_uniform()は、0から指定した数字未満の整数をランダムに生成するものです。ここでは40を指定しているので、0〜39の範囲の整数をランダムに発生します。それをDouble()で浮動小数点数に変換してから100.0で割っているので、その結果は、0.0〜0.39の範囲のランダムな数値になります。
さらにそれに0.1を加えているので、最終的な結果は0.1〜0.49の範囲の数値になります。こうして0.1を加えているのは、ボールの速度の最低値を0.1にすることで、遅過ぎることがないようにしているのです。
これが穴の底に達したときのランダムな速度設定ですが、上限の高さに達した際のmVelの設定は、以下のようになっています。
mVel *= -1.0
これは、その時点のmVelの値に-1.0を掛けた値を新たなmVelの値にする、という意味です。それによって、mVelの符号を反転するのです。ボールが上に向かっているときは、必ず速度は正の値なので、それと絶対値が同じ負の値に変更するのです。たとえば、2.4だったものは、-1.0を掛けることで-2.4になります。ここでは、上がっていくときと降りていくときのボール速度は、向きが違っても大きさは同じにしています。
実際にプログラムを動かして、動作を確認しましょう。
スクリーンショットでは動きまでは捉えられませんが、実際にプログラムを動かしてみれば、ボールが穴に引っ込むたびに、違う速度で飛び出してくることが分かります。なお、上のプログラム同様、このプログラムもずっと動き続けるので、動作を確認したら「停止」ボタンをタップ(クリック)して、動作を止めておきましょう。
この連載の記事
-
第5回
Apple
アップルの無償プログラミング学習ツール「Swift Playgrounds」アクションゲーム作り(仕上編) -
第3回
Apple
アップルの無償プログラミング学習ツール「Swift Playgrounds」アニメーションを動かそう -
第2回
Apple
アップルの無償プログラミング学習ツール「Swift Playgrounds」簡単なお絵描きアプリを作ろう -
第1回
Apple
アップル無償プログラミングツール「Swift Playgrounds」を試そう - この連載の一覧へ