“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。

59.ゲーム&ウォッチのマンホールを作ろう その6

最後はゲームの微調整。

得点に絡むイベントは、
 ・得点が加算されると徐々にスピードがあがる
 ・一定の得点に達すると、スピードが緩やかになる
 ・200点と500点で、ミスがクリアされるボーナスがある。
これを作りこむ。

得点を加算した後に、MOD関数を使って、20で割った余りが0の時にTIMER.CLEAR命令でタイマーをクリアして、タイマーの間隔を少しずつ短くしていく。
こうすると、短い間隔で通行人の処理が呼ばれるので、スピードが上がる。
20点ごとにスピードが上がって、100点ごとにもとに戻すようにした。

200点と500点で、ミスが1つでもあれば、ミスマークを点滅させて、クリアするアニメーションを見せる。
ミスを0に戻せば、ボーナスイベントが完成。

!通行人スピードアップ・ダウン処理

!20点ごとにスピードを増す
IF MOD(sc,20) = 0 & sc > 0 THEN
 TIMER.CLEAR
 IF itv > 500 THEN %際限なくは早くしない
  itv-=25
 ENDIF
 TIMER.SET itv
ENDIF

!100点ごとにスピードを戻す
IF MOD(sc,100) = 0 & sc > 0 THEN
 TIMER.CLEAR
 !ミスクリア
 IF (sc=200 | sc=500) & miss>0 THEN
  SOUNDPOOL.PLAY sp,4,0.99,0.99,1 
  FOR t=1 TO 5
   FOR q=1 TO miss
    GR.HIDE ms_obj[q]
   NEXT
   GR.RENDER
   PAUSE 500
   FOR qq=1 TO miss
    GR.SHOW ms_obj[qq]
   NEXT
   GR.RENDER
   PAUSE 500
  NEXT 
  FOR q=1 TO 3
   GR.HIDE ms_obj[q]
  NEXT 
  miss=0
 ENDIF

 itv=600
 TIMER.SET itv
ENDIF

!999点でカウンターストップ→0に戻す
if sc=1000 then sc=0

このゲームを屋外で遊ぶことを考えると、音は出せないこともあるなと。マンホールでは、通行人が通ると、ピッとビープ音が鳴る。そうすると、別の場所に移動しても通行人は落ちない。
この音が重要で、連続して通行人を通れるようにするときは音を聞いてから次、次と移動させる。
音自体は、wavファイルを作って鳴らせたが、聞こえないとなると困るなと。

そこで調べていると、VIBRATE命令なるものがあり、スマホのバイブを動かせる。
これで、音と同時にバイブを振動させることによって、音を消していても十分遊べるようになった。

!バイブレーションパターンの配列
ARRAY.LOAD vpt[],1,150 
VIBRATE vpt[],-1

こうして完成したのがこれ。
youtu.be

なにも考えず、仕様も練らずに思い付きで付け足して作ったので、あまり良いプログラムでは無いけど、作って動かして遊ぶ。という昔のBASICの懐かしさを、存分に味わうことができた。
これもAPKファイル化して、普段使っているスマホにインストールして、暇な時間に遊んでいる。