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 

 

 

inserted by FC2 system