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

VBでゲームを作ろう5

Visual Basicでゲームを作ろう5

敵クラスの作成

ここでは敵クラスを作成します。
順を追って説明しますが、難しいと思います。
まずはクラスを作成し、完成した後に一つずつ解読してください。

敵クラスを定義します。以下クラス設計です。

・インスタンスを生成するとランダムな場所に出現する。
 ・出現場所はあるコンポーネントの上のみ(今回はF_MainのパネルP_Enemyの上)
 ・出現する敵は三種類あり、どれかランダムに一つ選ばれる。

・三種類の敵について
 ・敵は画像で表示されそれぞれ違う。
 ・それぞれやっつけた(クリックされた)際に、得点が得られる。
  敵は倒されたらまた違う敵になって出現する。
 ・それぞれの敵の動きは種類によって違う。

まずクラスを作ります。

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

ファイル名は「Class1.vb」のまま追加ボタンを押します。

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

Public Class Class1

End Class

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

Public Class CEnemy

End Class

まず最初にコンストラクタを定義します。

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

    ' コンストラクタ
    Public Sub New()

    End Sub

    ' デストラクタ
    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub

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

    ' 変数
    Dim PB_ImgEnemy As PictureBox ' 敵の画像
    Dim O_Owner As Object         ' 敵が出現するオーナー
    Dim R_Rnd As System.Random    ' ランダム変数
    Dim intTokuten As Integer     ' 敵を倒した時の得点
    Dim intMvwd As Integer        ' 敵が動く際の幅
    Dim intMvud As Integer        ' 上下左右に動く
    Dim intMovePattern As Integer ' 敵のパターン

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

    ' コンストラクタ
    ' Owner : 敵が出現するオーナー
    ' Rnd   : ランダム変数
    Public Sub New(ByRef Owner As Object, ByRef Rnd As Object)

        ' 敵の画像を表示する変数を初期化
        PB_ImgEnemy = New PictureBox
        ' オーナーの取得
        O_Owner = Owner
        ' ランダム変数
        R_Rnd = Rnd
        ' 敵が動く際の幅の初期化
        intMvwd = 10
        ' 上下左右に動く
        intMvud = 0

        ' 敵画像がクリックされたイベント
        AddHandler PB_ImgEnemy.Click, AddressOf DoClick
        ' ランダムな場所に出現
        _RandPlace(O_Owner, PB_ImgEnemy)
        ' オーナーに画像を貼り付け
        O_Owner.Controls.Add(PB_ImgEnemy)

    End Sub

DoClickと_RandPlaceメソッドが足りませんね。続いて実装していきます。

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

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

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

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

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

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

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

    ' 敵画像をランダムな場所に作成
    ' Owner : 敵が出現するオーナー
    ' i_Obj : 敵画像
    Private Sub _RandPlace(ByRef Owner As Object, ByRef i_Obj As Object)
    
        ' 出現場所はオーナーの範囲内にする
        ' 高さ
        Dim intTop As Integer = R_Rnd.Next(Owner.Size.Height - i_Obj.Size.Height)
        i_Obj.Top = intTop
        ' 横
        Dim intLeft As Integer = R_Rnd.Next(Owner.Size.Width - i_Obj.Size.Width)
        i_Obj.Left = intLeft

        ' 敵のパターン(画像と得点)をランダムに指定する
        intMovePattern = R_Rnd.Next(1, 4)
        PB_ImgEnemy.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
        Select Case intMovePattern
            Case 1
                '画像読み込み
                PB_ImgEnemy.Image = System.Drawing.Image.FromFile("enemy1.gif")
                '得点
                intTokuten = 500
            Case 2
                '画像読み込み
                PB_ImgEnemy.Image = System.Drawing.Image.FromFile("enemy2.gif")
                '得点
                intTokuten = 1000
            Case 3
                '画像読み込み
                PB_ImgEnemy.Image = System.Drawing.Image.FromFile("enemy3.gif")
                '得点
                intTokuten = 3000
        End Select
        
    End Sub

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

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

  • 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.