メインフォームの敵を倒す処理の実装
敵クラスの実装が完了しましたので、いよいよメイン画面の敵を倒す処理を実装します。
まずメイン画面(F_Main)にタイマーを二つ追加します。
敵を動かすタイマー(Timer)
プロパティ | 値 | 備考 |
---|---|---|
Name | T_Enemy | |
Interval | 1000 |
残り時間をカウントタイマー(Timer)
プロパティ | 値 | 備考 |
---|---|---|
Name | T_Jikan | |
Interval | 1000 |
まず敵を動かすイベントです。
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になるとメッセージが表示され終了となります。
ここまでくればあともう一息です。
またうまく動かない敵があれば、コーディングにミスがあるかもしれませんので、確認しておきましょう。
\オススメ/
リンク
リンク
リンク
コメント