このページの本文へ

アップルの無償プログラミング学習ツール「Swiftプログラミング」でいっしょに遊ぼう 第4回

アップルの無償プログラミング学習ツール「Swift Playgrounds」アクションゲーム作り(準備編)

2020年09月27日 09時00分更新

文● 柴田文彦 編集●飯島恵里子/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

ステップ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になります。ここでは、上がっていくときと降りていくときのボール速度は、向きが違っても大きさは同じにしています。

 実際にプログラムを動かして、動作を確認しましょう。

 スクリーンショットでは動きまでは捉えられませんが、実際にプログラムを動かしてみれば、ボールが穴に引っ込むたびに、違う速度で飛び出してくることが分かります。なお、上のプログラム同様、このプログラムもずっと動き続けるので、動作を確認したら「停止」ボタンをタップ(クリック)して、動作を止めておきましょう。

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中