ボム(2/2) |
6.自機爆発中の処理を修正する |
自機が爆発して、復活する時にボムの個数を3発に戻します。「自機爆発中の処理」に1行追加します。
; 自機爆発中の処理
if playerf=3 {
peplcnt=peplcnt+1
if peplcnt=100 {
noption=0
nplayer=nplayer-1
if nplayer=0 {
playerf=0
govercnt=0
}
else {
playerf=2
revcnt=0
playerx=xsize/2-16
playery=ysize-64
nbomb=3 ←ここです。
}
}
}
7.ボム爆発の描画 |
絵のファイルに爆発パターンと、残り数表示用の絵を追加しました。
敵全体にダメージを与えるといっても、画面中を爆煙で埋め尽くすわけではありません。あくまでもそういう雰囲気を出すだけです。そこで、位置をランダムに決めた10個の爆煙を描き、アニメーションさせる、ということを4回繰り返すことにします。すると、bombcntが15の倍数の時に位置を決めなおせばよいということになります。
if bombcnt!-1 {
if bombcnt\15=0 {
repeat 10
rnd bombx.cnt,xsize-64
rnd bomby.cnt,ysize-64
loop
}
repeat 10
gdx=bombx.cnt:gdy=bomby.cnt
i=bombcnt\15
if i<5 { gdox=$140 }
if (i>=5)&(i<10) { gdox=$180 }
if i>=10 { gdox=$1C0 }
gdoy=$C0
gdw=64:gdh=64
gosub *Graphic_Draw
loop
}
8.ボム残り数表示 |
nbombの数だけ小さい爆弾を描きます。左下隅に描くことにします。
repeat nbomb
gdx=cnt*16:gdy=ysize-16
gdox=$70:gdoy=$10
gdw=16:gdh=16
gosub *Graphic_Draw
loop
nbombが0の時、この処理は行われません。
まとめますと、ボムに関する処理は以下のようになります。
; プログラム起動時の初期設定 ; ボムの変数宣言 dim bombx,10:dim bomby,10 ; ゲームスタート時の初期設定 nbomb=3 ; ステージスタート時の初期設定 bombcnt=-1 ; ボム爆発中の処理 if bombcnt!-1 { repeat 100 eshotf.cnt=0 loop bombcnt=bombcnt+1 if bombcnt=60 { bombcnt=-1 } } ; ボムを爆発させる if ((playerf=1)|(playerf=2))&(pskey=0)&(skey=1)&(nbomb>0)&(bombcnt=-1) { nbomb=nbomb-1 bombcnt=0 } ; ボムが敵にダメージを与える処理 if bombcnt!-1 { repeat 10 if (enemyf.cnt=1)|(enemyf.cnt=2) { enemyno=cnt gosub *Enemy_Dmg } loop } ; 自機爆発中の処理 if playerf=3 { peplcnt=peplcnt+1 if peplcnt=100 { noption=0 nplayer=nplayer-1 if nplayer=0 { playerf=0 govercnt=0 } else { playerf=2 revcnt=0 playerx=xsize/2-16 playery=ysize-64 nbomb=3 } } } ; ボム爆発の描画 if bombcnt!-1 { if bombcnt\15=0 { repeat 10 rnd bombx.cnt,xsize-64 rnd bomby.cnt,ysize-64 loop } repeat 10 gdx=bombx.cnt:gdy=bomby.cnt i=bombcnt\15 if i<5 { gdox=$140 } if (i>=5)&(i<10) { gdox=$180 } if i>=10 { gdox=$1C0 } gdoy=$C0 gdw=64:gdh=64 gosub *Graphic_Draw loop } ; ボム残り数表示 repeat nbomb gdx=cnt*16:gdy=ysize-16 gdox=$70:gdoy=$10 gdw=16:gdh=16 gosub *Graphic_Draw loop ; キー、ジョイパッドの入力 *In_Key pckey=ckey pskey=skey pukey=ukey pdkey=dkey plkey=lkey prkey=rkey ckey=0 skey=0 ukey=0 dkey=0 lkey=0 rkey=0 digetkeystate key,0 if key&256!0 { ckey=1 } if key&1!0 { ukey=1 } if key&2!0 { dkey=1 } if key&4!0 { lkey=1 } if key&8!0 { rkey=1 } digetkeystate key,1 if key&16777216!0 { ukey=1 } if key&2!0 { dkey=1 } if key&64!0 { lkey=1 } if key&1048576!0 { rkey=1 } digetkeystate key,3 if key&(1<<19)!0 { skey=1 } if njoy>0 { digetjoystate key,0 if key&16!0 { ckey=1 } if key&32!0 { skey=1 } if key&1!0 { ukey=1 } if key&2!0 { dkey=1 } if key&4!0 { lkey=1 } if key&8!0 { rkey=1 } } return
実行画面
ひとくちメモ: |
・ボタンの割り当て |
ボムボタンのすぐ近くにポーズボタンや、強制終了ボタンを配置しているゲームを時々見かけますが、私にはあまりいい事とは思えません。ボムを発射しようとして誤ってそのボタンにさわってしまうことがあるからです。ポーズならまだいいですが、いきなり強制終了されると唖然としてしまいますね。 ただ、これは人によって考え方が違うと思います。その作者さんの考え方も分かるのです。ポーズをかけようとしてキーボードに手を伸ばしたら、その間にやられちゃった、というふうになったらむかつくじゃないかと。ポーズボタンもジョイパッドにあった方がいいじゃないかと。 そういう場合、ゲームをする人がボタンの配置を変更できるようにすると親切ですね。 |