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

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

VB
スポンサーリンク

敵クラスについて

それでは敵クラスを作成します。

仕様
  • インスタンスを生成するとランダムな場所に出現する。
  • 出現場所はあるコンポーネントの上のみ(今回はF_MainのパネルP_Enemyの上)
  • 出現する敵は三種類あり、どれかランダムに一つ選ばれる。
  • 敵は画像で表示されそれぞれ違う。
  • それぞれやっつけた(クリックされた)際に、得点が得られる。
  • 敵は倒されたらまた違う敵になって出現する。
  • それぞれの敵の動きは種類によって違う。

クラス作成

メニューの「プロジェクト」→「クラスの追加」をクリックします。

ファイル名は任意で結構ですが、「Class1.vb」のまま追加ボタンを押します。

初期では以下のようになっております。

Public Class Class1
 
End Class

Class1の部分がクラス名となっておりますので、敵クラス(CEnemy)に名前を変更します。

Public Class CEnemy
 
End Class

コンストラクタを定義

コンストラクタとデストラクタを定義します。
敵クラスが生成されたときに呼び出されますので、初期化を行います。

コンストラクタとは、クラスのインスタンス生成時に実行されるメソッドです。

以降、以下のように、クラスの中に定義していきます。

Public Class CEnemy
 
    ' コンストラクタ
    Public Sub New()
 
    End Sub
 
    ' デストラクタ
    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub
 
End Class

まずはこのクラスで使用する変数を定義します。

    ' クラス内変数
    Private _pbImgEnemy As PictureBox  ' 敵の画像
    Private _enemyOwner As Object      ' 敵が出現するオーナー
    Private _rnd As System.Random      ' ランダム変数
    Private _intTokuten As Integer     ' 敵を倒した時の得点
    Private _intMvwd As Integer        ' 敵が動く際の幅
    Private _intMvud As Integer        ' 上下左右に動く
    Private _intMovePattern As Integer ' 敵のパターン

コンストラクタの引数を二つ追加し、以下のようにコーディングします。
引数は、敵が移動できるコンポーネント(パネル)と、ランダム変数です。

    ' コンストラクタ
    ' owner : 敵が出現するオーナー
    ' rnd   : ランダム変数
    Public Sub New(ByRef owner As Object, ByRef rand As System.Random)
 
        ' 敵の画像を表示する変数を初期化
        _pbImgEnemy = New PictureBox
        ' オーナーの取得
        _enemyOwner = owner
        ' ランダム変数
        _rnd = rand
        ' 敵が動く際の幅の初期化
        _intMvwd = 10
        ' 上下左右に動く
        _intMvud = 0
 
        ' 敵画像がクリックされたイベント
        AddHandler _pbImgEnemy.Click, AddressOf DoClick
        ' ランダムな場所に出現
        _RandPlace()
        ' オーナーに画像を貼り付け
        _enemyOwner.Controls.Add(_pbImgEnemy)
 
    End Sub

DoClickと_RandPlaceメソッドの実装

まずクリックイベントを実装します。
敵画像をクリックされた際に処理するためです。
変数宣言の下あたりにクリックイベントを宣言します。

    ' クリックイベント
    Public Event OnClick(ByVal sender As System.Object, ByVal e As EventArgs)

次にクリックイベントの実装です。

    ' Clickイベントを発生させる
    Public Sub DoClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        RaiseEvent OnClick(Me, e)
    End Sub

上記を実装することで、敵画像(_pbImgEnemy)のクリックイベントがこのクラスのクリックイベントになります。

次に敵をランダムな場所に出現するメソッド「_RandPlace」を追加します。

敵自体もランダムに選択されます。ここでは三種類の敵にします。
他のクラスから呼ばれる必要がないのでPrivateにしておきます。

   ' 敵画像をランダムな場所に作成
    Private Sub _RandPlace()
 
        ' 出現場所はオーナーの範囲内にする
        ' 高さ
        Dim intTop As Integer = _rnd.Next(_enemyOwner.Size.Height - _pbImgEnemy.Size.Height)
        _pbImgEnemy.Top = intTop
        ' 横
        Dim intLeft As Integer = _rnd.Next(_enemyOwner.Size.Width - _pbImgEnemy.Size.Width)
        _pbImgEnemy.Left = intLeft
 
        ' 敵のパターン(画像と得点)をランダムに指定する
        _intMovePattern = _rnd.Next(1, 4)
        _pbImgEnemy.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
        Select Case _intMovePattern
            Case 1
                '画像読み込み
                _pbImgEnemy.Image = System.Drawing.Image.FromFile("enemy1.gif")
                '得点
                _intTokuten = 500
            Case 2
                '画像読み込み
                _pbImgEnemy.Image = System.Drawing.Image.FromFile("enemy2.gif")
                '得点
                _intTokuten = 1000
            Case 3
                '画像読み込み
                _pbImgEnemy.Image = System.Drawing.Image.FromFile("enemy3.gif")
                '得点
                _intTokuten = 3000
        End Select
 
    End Sub

_intMovePatternが1の場合、画像は「enemy1.gif」が選択され、倒した際の得点は500点になります。

ひとまず敵クラスの初期化の実装はここまでです。
少しコーディングしてきましたが、一行ずつ解読してみてください。

コメント

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