UFOゲームの制作 VB6 | |
(4) タイマーによる処理 [ |
9. ゲームオーバーの判定
ゲームオーバーは自機の残りがなくなったときである。ゲームオーバーを表示してUnload命令で終了する。処理はタイマーのプロシージャ内に作ることにする。
Unload命令を実行するとForm_QueryUnloadプロシージャが呼び出されるので、ゲームオーバーのとき再度ゲームをするかを確認する処理はForm_QueryUnloadプロシージャに作る。
Private Sub Timer1_Timer() 'ゲームのメイン処理 Idou '自機弾移動処理 TekiIdou '敵移動処理 Tekidan '敵弾発射と敵弾移動処理 UFO 'UFO出現とUFO移動処理 AtariHantei '当たりの判定 Bakuha '爆破図表示 'ゲームオーバー判定 If TaihouNokori = -1 Then MsgBox "GAME OVER" Unload Me End If 'ゲームクリア判定 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '終了時の処理 Dim res As VbMsgBoxResult '終了確認 res = MsgBox("もう一度しますか?", vbYesNo) If res = vbYes Then '終了しない Cancel = True '#1 ポイント TaihouNokori = MaxTaihou '自機残り初期化 InitGame '配置初期化 lblTokuten.Caption = 0 '得点初期化 Else End 'プログラム終了 End If End Sub
#1 CancelにTrueを記憶させてForm_QueryUnloadプロシージャを終えるとプログラムは終了しない。
10. ゲームクリアの判定
ゲームクリアは敵がすべて爆破されたときである。
Private Sub Timer1_Timer() 'ゲームのメイン処理 Idou '自機弾移動処理 TekiIdou '敵移動処理 Tekidan '敵弾発射と敵弾移動処理 UFO 'UFO出現とUFO移動処理 AtariHantei '当たりの判定 Bakuha '爆破図表示 'ゲームオーバー判定 If TaihouNokori = -1 Then MsgBox "GAME OVER" Unload Me End If 'ゲームクリア判定 flag = 0 '敵の残り確認 For n = 0 To MaxTeki If imgTeki(n).Visible = True Then '敵の残り有り flag = 1 Exit For End If Next n If flag = 0 Then 'Game Clear MsgBox "クリア!! 続けます!" InitGame '再スタート End If End Sub
これで一応、完成である。
簡単にクリアできてしまうので、敵弾の発生など工夫する必要がある。また、ハイスコアの記録や敵の数が減ってきたときもっと早く移動させるなどいろいろと工夫してみよう。
(4) タイマーによる処理 [ | |
Copyright © 2002 Hiroshi Masuda |