シューティングゲームを作ろう その4 |
6.自機の移動 |
; ;メイン・ループ ; *Main_Loop await 16 gosub *Input_Key ;自機の移動 if myship_state != 2 { if leftkey == 1 { myship_x -= 4 } if rightkey == 1 { myship_x += 4 } if upkey == 1 { myship_y -= 4 } if downkey == 1 { myship_y += 4 } if myship_x < 0 { myship_x = 0 } if myship_x > GWIDTH - 32 { myship_x = GWIDTH - 32 } if myship_y < 0 { myship_y = 0 } if myship_y > GHEIGHT - 32 { myship_y = GHEIGHT - 32 } }
ここから先がメイン・ループとなります。
自機が移動できるのは通常状態の時か復活中の時です。爆発中は動けません。
左右上下キーが押されていれば、myship_x、myship_yを増減します。例えば左キーと上キーが同時に押された場合は、myship_x -= 4とmyship_y -= 4が行われ、左斜め上に動きます。
7.自機の弾の射出 |
;自機の弾の射出 if myship_state != 2 & pre_zkey == 0 & zkey == 1 & shot_f == 0 { dsplay 0 shot_f = 1 shot_x = myship_x shot_y = myship_y - 32 }
爆発中は弾を撃てません。また、すでに弾が存在している場合も撃てません。押しっぱなしでは撃てず、Zキーまたはボタン1を押すたびに撃てるものとします。
ショット音を鳴らし、shot_fを1にします。自機の弾の座標をshot_x、shot_yに入れます。射出位置は自機の真上とします。自機の大きさも、弾の大きさも32×32ですから、x座標は自機と同じで、y座標は自機より32ドット上の位置です。
8.自機の弾の移動 |
;自機の弾の移動 if shot_f == 1 { shot_y -= 16 if shot_y <= -32 { shot_f = 0 } }
自機の弾が存在するならば、上へ移動します。ここでは、一度に16ドット動くものとします。画面上端から消えたらshot_fを0にします。
なお、「自機の弾の移動」処理は「自機の弾の射出」処理より前に書きます。後ろに書くと、射出の後すぐに移動を行ってしまい、最初に描かれるのが1回動いた位置になってしまうからです。