自分だけのクイズ作成 - Quipha公開中

【#7】VBでゲームを作ろう【敵クラスの生成】

VB
スポンサーリンク

メインフォームの敵を倒す処理の実装

敵クラスの実装が完了しましたので、いよいよメイン画面の敵を倒す処理を実装します。
まずメイン画面(F_Main)にタイマーを二つ追加します。

敵を動かすタイマー(Timer)

プロパティ備考
NameT_Enemy
Interval1000

残り時間をカウントタイマー(Timer)

プロパティ備考
NameT_Jikan
Interval1000

まず敵を動かすイベントです。
T_EnemyのTickイベントに以下を記述します。

    ' 敵を動かす
    Private Sub T_Enemy_Tick(sender As Object, e As EventArgs) Handles T_Enemy.Tick
        Dim i As Integer
        ' 敵の数だけループする
        For i = 0 To _enemies.Count() - 1
            ' 敵の移動イベントを呼ぶ
            CType(_enemies(i), CEnemy).MvEnm()
            ' ループの中でDoEventsを呼んでおく
            System.Windows.Forms.Application.DoEvents()
        Next
    End Sub

次に残り時間をカウントする処理です。
制限時間内は、プログレスバーのカウントを一つ下げて、制限時間を過ぎた場合は、合計得点を表示し、タイマーを止めます。
T_JikanのTickイベントに以下を記述します。

' 残り時間を計測
Private Sub T_Jikan_Tick(sender As Object, e As EventArgs) Handles T_Jikan.Tick
    If (PG_Jikan.Minimum) <= (PG_Jikan.Value - 1) Then
        ' プログレスバーを一つ下げる
        PG_Jikan.Value = PG_Jikan.Value - 1
    Else
        ' 終わり
        PG_Jikan.Value = PG_Jikan.Minimum
        ' タイマーを止める
        T_Enemy.Enabled = False
        T_Jikan.Enabled = False
        ' メッセージを表示
        MsgBox("終了です" & vbCrLf & "あなたの得点は" & L_Sum.Text & "です")
        ' メイン画面を閉じる
        Me.Close()
    End If
End Sub

続いてすでに実装したスタートボタンのクリックイベント(B_Start_Click)に、タイマーのスタート処理を追加します。

' スタートボタンクリック
Private Sub B_Start_Click(sender As Object, e As EventArgs) Handles B_Start.Click
    ' スタートボタンを使えなくする
    B_Start.Enabled = False

    ' 敵の作成
    Dim i As Integer
    ' 敵を10体生成します
    For i = 0 To 9
        ' 配列に敵クラスを生成します。その際にオーナーのパネルとランダム変数を渡します。
        _enemies.Add(New CEnemy(Me.P_Enemy, _rnd))
        ' ループの中でDoEventsを呼んでおく
        System.Windows.Forms.Application.DoEvents()
    Next

    ' タイマーのスタート
    T_Enemy.Enabled = True
    T_Jikan.Enabled = True
End Sub

ここで一度実行してみましょう。
初級ボタンを押して、スタートボタンを押すと今度は敵が動いていると思います。
また残り時間もカウントダウンされ、プログレスバーが0になるとメッセージが表示され終了となります。

ここまでくればあともう一息です。
またうまく動かない敵があれば、コーディングにミスがあるかもしれませんので、確認しておきましょう。

コメント

タイトルとURLをコピーしました