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

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

MIT App Inventorで遊ぶ (マリオ その2)

2024-03-22 08:27:30 | 日記

春分の日に散歩していたら、急に、衝突した時のアイデアが。

忍法「雲隠れの術」で衝突を回避し、回避できなかった場合はスコアが1点減少するというもの。

おかしくも、面白くもないが。。。

「雲隠れ」のボタンについては、み・ん・なが大変お世話になっているらしい素材サイト「かわいいフリー素材集 いらすとや」さんの雲隠れの忍者を使わせてもらった。

実行画面:

スクリーンのデザイン:

右上にスコアー欄、雲隠れボタン、そして衝突の際表示させるアイコンを追加。サイズ、画面上の位置はすべてプログラム(ブロック)で設定。Designerの画面上にはオリジナルなサイズで適当に配置されている。

プログラム(ブロック):

雲隠れさせる部分と衝突した時の対応部分のみ。

1. 「雲隠れ」ボタンをタップした時の対応。

変数kumogakureSoundを設定して、同ボタンを押した回数を割り当てる。

0回(初回)と3で割り切れる回数の時にSound2(「忍法雲隠れ」)を再生する。毎回だと鬱陶しくなる。

2. 今回の対象は下半分の部分。(キャラクターが敵と衝突した時の対応)

キャラクターが敵と衝突したら、

=> 得点(初期値は5)を1減点。

=> もし得点が0の場合は、ゲームは終わり、スタートボタンが表示される。

=> 得点がまだ0ではない場合は、Sound1(衝突音)を再生、collisionSprite(赤の衝突アイコン)の表示、キャラクターと敵を非表示、非表示の敵を80ピクセル右へ移動させる、最後にClock ("collisionClock")を有効に設定。

(右上のバッグは無視)

 

3. Clockが動き始めるとともに、衝突アイコンが非表示となり、キャラクターを再表示させ、Clockを無効(停止)にする。この操作により、Clockに予め設定されているTime Interval(400ミリ秒)の間にこれらの動作が行われることになる。そして、最後に敵の再表示となる。このあたりはうまく説明できないが、何回も試行錯誤を繰り返した結果、とりあえずはこのブロックで落ち着いた。

なお、雲隠れボタンをタップしても、タップするタイミングが早すぎると(消える時間は400ミリ秒)、消えた状態で衝突してしまうことになる。実行画面でも起こっている。

このような、Clockを有効にし、動き始めた途端に無効にすることにより設定したTimeInterval分の時間を生み出す方法は、例えば、画像とかの重い処理がある場合に使われる方法らしい。

 

<今回は、衝突により得点が減少していくので、次の課題(マリオ その3)は得点を獲得する方法を追加すること。先はまだまだ続きそう!>