クリップボード履歴ソフトCliborを公開中!

VBでゲームを作ろう7

Visual Basicでゲームを作ろう7

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

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

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

プロパティ 備考
Name T_Enemy
Interval 1000

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

プロパティ 備考
Name T_Jikan
Interval 1000

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

' 敵を動かす
Private Sub T_Enemy_Tick(ByVal sender As System.Object, ByVal e As System.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(ByVal sender As System.Object, ByVal e As System.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(ByVal sender As System.Object, ByVal e As System.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, G_Rnd))
' ループの中でDoEventsを呼んでおく
System.Windows.Forms.Application.DoEvents()
Next
' タイマーのスタート
T_Enemy.Enabled = True
T_Jikan.Enabled = True
End Sub

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

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

  • Facebook
  • Hatena
  • twitter
  • Google+

サイト内検索

サイトについて

Amunsへ直接のお問い合わせはこちらからContact

寄付のお願い

Cliborはフリーソフトですが寄付歓迎です。 →寄付のお願い
PAGETOP
Copyright © amuns:code All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.