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

サイト内検索

サイトについて

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

寄付のお願い

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