クリップボード履歴ソフト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+

サイトについて

Cliborに関する匿名のアンケートやご要望はこちらからCliborアンケート


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

寄付のお願い

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