カテゴリー
Visual Basic

クリアとゲームオーバー

すべてのブロックを消せたときはクリア。また、ラケットでボールを打ち返すのに失敗したらゲームオーバーにします。

クリアした時、ゲームオーバーになったときは、それぞれメッセージを表示してタイマーイベントを無効化しましょう。

クリアできたかどうかの判断は、表示中のブロックの数が0になったことでわかります。

表示中のブロックの数を数える CountBricks() というファンクションプロシージャを作りましょう。

    Public Function CountBricks()
        Dim i, j, sum As Integer
        Dim b As Label
        sum = 0
        For i = 0 To 9
            For j = 0 To 5
                b = brick(i, j)
                If b.Visible Then
                    sum += 1
                End If
            Next
        Next
        Return sum
    End Function

タイマーイベント内で残りのブロックの数を見て、0になってたらクリアにします。
また、ボールがラケットよりも下に行ったらゲームオーバーにします。

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        HitWall()
        HitRacket()
        HitBricks()
        If CountBricks() = 0 Then
            Timer1.Enabled = False
            MsgBox("クリアしました!")
        End If
        If y > Racket.Top + Racket.Height Then
            Timer1.Enabled = False
            MsgBox("ゲームオーバー")
        End If
        x = x + dx
        y = y + dy
        Ball.Left = x
        Ball.Top = y
    End Sub