75才からのモバイルアプリ作成

MIT App Inventorを使ったアプリ作成

MIT App Inventorで遊ぶ (Treasure Hunt App 1)

2024-05-14 12:30:12 | 日記

Accelerometer Sensorを使った簡単なゲーム。

Accelerometer Sensorを使って、スマホの左側を下に傾ければ、ボールが左に移動、右に傾ければ、右に移動させる。YouTubeなどでもよくあるもの。一度はやってみたいというだけ。

実行画面:

スクリーンのデザイン:

Android のデザイン画面                         iPhoneのデザイン画面                               障害物のcomponents

       

ブロック・コード:

1. スクリーン・デザイン(iPhone)の紫色(blackHoleSprite)に衝突した際に再生するサウンド(Bang)の登録。これに衝突すると元の位置に戻ることになる。

2. Accelerometer SensorのOn/Offステイタスを保持する変数enableAcc、経過時間(秒)を保持する変数timeCount、後記のxAccelとyAccelの値を格納する変数xおよびy。

3. startボタンをタプすると、Accelerometerが起動し、Clock1も動き始める。

4. リセット・ボタンの設定。初期値に再設定。ボールも元の位置に戻る(x: 250, y:350)。

5. 時間の経過(timeCount)に1(秒)加算する。その値をshowElapsedTimeに表示。

6. xAccel: スマホを右に傾ければ、正数(incremental)、左に傾ければ、負数(decremental)。yAccel: スマホの下が持ち上がれば、正数(incremental)、上を持ち上げれば負数(decremental)。スマホが水平に保たれれば、いずれも0。

傾きが大きければボールの移動スピードも大きくなる。

7. ボールが障害物(茶色)と衝突した時に上方向、下方向、右方向、左方向に3pixels障害物より離れさせる関数を設定。

障害物に衝突した際に決められた値だけ障害物より離れることにより、障害物を通過してしまうことを防ぎ、バウンスしたように見せる。(実際は、スピードが速いと、障害物を通過してしまうので、どのように対応すべきか検討を要する。)

8. ボールがそれぞれの障害物(周りの壁も含めた茶色の部分)と衝突した際のボールの動きを設定。

周りの壁の場合は、上部の壁だと、下方向にバウンスさせる等々。他の障害物(縦長)の場合は、右から衝突したのか、左から衝突したのかをチェックして、それにより、左へバウンスさせるか、右へバウンスさせるかを決定している。横長の場合は、上か下かにバウンスさせることになる。

ただし、現段階では、例えば縦長の障害物の場合、上辺に上から衝突した場合などは想定しておらず、この場合はバウンスせず突っ切ってしまうことになる。(対応検討中。実際、上記実行画面のビデオでも最初の方で縦長の障害物の上辺を突き破っている。)

                               ========== 途中省略 ==========

金塊(最終ゴール)に辿り着いた時の設定。金塊まで要した時間(秒)を表示。

紫色のblackHoleSpriteに衝突した場合は、ボールは元の位置に戻されてしまう設定になっている。

ボールのスピードが速くなっても、障害物を突き破ってしまわないような方法があるのだろうか?

 



コメントを投稿