春分の日に散歩していたら、急に、衝突した時のアイデアが。
忍法「雲隠れの術」で衝突を回避し、回避できなかった場合はスコアが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)は得点を獲得する方法を追加すること。先はまだまだ続きそう!>