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

VBでゲームを作ろう8

Visual Basicでゲームを作ろう8

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

もうラストです。敵をクリックしたら得点を加算する処理を実装します。
以下のメソッドをメイン画面(F_Main)に追加します。

' 敵クリックイベント
Public Sub EnmOnClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
' 得点の加算(それぞれの敵の得点を取得する。)
L_Sum.Text = CInt(L_Sum.Text) + CType(sender, CEnemy).GetTokuten
' 敵を倒したイベント(再度敵を出現させる)
Call CType(sender, CEnemy).EnemyDown()
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))
' 敵のクリックイベント(倒すイベント)
AddHandler CType(Enemies(i), CEnemy).OnClick, AddressOf EnmOnClick
' ループの中でDoEventsを呼んでおく
System.Windows.Forms.Application.DoEvents()
Next
' タイマーのスタート
T_Enemy.Enabled = True
T_Jikan.Enabled = True
End Sub

これでほぼ完成です。
最後に初級・中級・上級の処理を書きましょう。

ちなみに以下の処理の役割をまとめましょう。

・敵の数 : スタートボタンクリック時のループの回数。
・敵の動くスピード : タイマー(T_Enemy)のインターバル。
・敵の動く範囲 : パネル(P_Enemy)の大きさ。
・残り時間 : プログレスバー(PG_Jikan)の値。

この値を設定することで難易度を変更します。

メイン画面(F_Main)の先頭に以下の変数を追加します。

Public Enms As Integer          ' 敵の数
Public EnmTim As Integer        ' 敵の動くスピード(秒数)
Public GmTim As Integer         ' 残り時間(秒数)

さらに初期化するメソッドを追加します。

メイン画面(F_Main)の先頭に以下のメソッドを追加します。

' 難易度初期化
Public Sub FrmIni()
' フォームのサイズでコントロールを配置する
P_Enemy.Top = 71 '固定
P_Enemy.Height = Me.Height - 115
P_Enemy.Left = 12 ' 固定
P_Enemy.Width = Me.Width - 30
' 合計得点
L_Sum.Text = "0"
' 敵の動くスピード
T_Enemy.Interval = EnmTim
' 残り時間の初期化
PG_Jikan.Maximum = (EnmTim / 1000)
PG_Jikan.Value = PG_Jikan.Maximum
End Sub

P_Enemy.TopとP_Enemy.Leftはフォームとパネル次第ですので調整してください。

次にスタートボタンクリックイベントのループの回数を変更します。

' スタートボタンクリック
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 Enms - 1
' 配列に敵クラスを生成します。その際にオーナーのパネルとランダム変数を渡します。
Enemies.Add(New CEnemy(Me.P_Enemy, G_Rnd))
' 敵のクリックイベント(倒すイベント)
AddHandler CType(Enemies(i), CEnemy).OnClick, AddressOf EnmOnClick
' ループの中でDoEventsを呼んでおく
System.Windows.Forms.Application.DoEvents()
Next
' タイマーのスタート
T_Enemy.Enabled = True
T_Jikan.Enabled = True
End Sub

最後にメニュー画面(F_Menu)に戻って初級・中級・上級ボタンのクリックイベントに難易度を設定します。
とりあえず以下のように難易度を設定してみました。

' 初級ボタンクリック
Private Sub B_Syokyu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Syokyu.Click
F_Main.Height = 400    ' フォームの高さ
F_Main.Width = 400     ' フォームの幅
F_Main.EnmTim = 1000   ' 敵の動く速度
F_Main.Enms = 20       ' 敵の数
F_Main.GmTim = 10000   ' 制限時間
F_Main.FrmIni()        ' 難易度初期化
F_Main.Show()
Me.Hide()
End Sub
' 中級ボタンクリック
Private Sub B_Chukyu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Chukyu.Click
F_Main.Height = 500    ' フォームの高さ
F_Main.Width = 700     ' フォームの幅
F_Main.EnmTim = 800    ' 敵の動く速度
F_Main.Enms = 30       ' 敵の数
F_Main.GmTim = 15000   ' 制限時間
F_Main.FrmIni()        ' 難易度初期化
F_Main.Show()
Me.Hide()
End Sub
' 上級ボタンクリック
Private Sub B_Jyokyu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Jyokyu.Click
F_Main.Height = 600    ' フォームの高さ
F_Main.Width = 800     ' フォームの幅
F_Main.EnmTim = 300    ' 敵の動く速度
F_Main.Enms = 40       ' 敵の数
F_Main.GmTim = 20000   ' 制限時間
F_Main.FrmIni()        ' 難易度初期化
F_Main.Show()
Me.Hide()
End Sub

以上で、全て完成です。
お疲れ様でした。

あまりにも敵の数が多すぎて、動く速度が早い場合など
正常に動かなくなりますので、適正な難易度を設定してください。

 
  • Facebook
  • Hatena
  • twitter
  • Google+

サイト内検索

サイトについて

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

寄付のお願い

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