リバース Game の制作 VB6 | |
(2) オブジェクトの初期化 |
2. ゲームの初期化
オブジェクトの配置(InitFieldサブプロシージャ)はプログラム実行の最初に一度だけ行えばよい。配置などは変わらないからである。
ここでは、ゲームを始める前の初期化を行う。InitGameサブプロシージャとして作成する。
・プログラムリスト
Option Explicit Const BLANK = 0 '#1 定数定義 Const WHITE = 1 Const BLACK = 2 Dim Field(7, 7) As Integer '#2 フィールド状態記憶用 Dim Junban As Integer '#3 順番用 Dim JunbanMsg(2) As String '#3 順番メッセージ用 Private Sub Form_Load() 'データ設定 Junban = WHITE '順番設定 JunbanMsg(1) = "白の番です。" JunbanMsg(2) = "黒の番です。" 'ゲーム初期化 InitField 'オブジェクト作成と配置初期化 InitGame 'フィールド初期化 End Sub
#1 定数を3つ定義している。白の駒はpicKoma(1)、黒の駒はpicKoma(2)に画像を用意しているが、プログラム中で白は1、黒は2というように使っていては後で見るときなど数字の意味がわからなくなる。ここでは、それらを定数として定義しておく。Constが定数として定義する宣言である。
Const WHITE = 1
プログラム中のWHITEは1として取り扱われる。変数と同じように考えても良いが、プログラム中で
WHITE=5 のように別の値を代入することはできない。WHITEは定数であるからである。
#2 フィールドの状態、すなわちどこにどの色の駒が置かれているか、どこが空いているかという情報を記憶しておくための二次元配列Fieldを宣言している。この値がBLANK(=0)であれば空き、WHITE(=1)であれば白駒というように設定する。オブジェクトのpicFieldを調べても3つの状態(空き、白、黒)がわからないので用意している。
#3 現在の順番を記憶しておくためとそのメッセージ用である。Form_Loadプロシージャでデータを設定している。
・プログラムリスト(ゲームの初期化)
Private Sub InitGame() Dim n As Integer, x As Integer, y As Integer For n = 0 To 63 x = n Mod 8 '#1 フィールドx座標 y = Int(n / 8) '#1 フィールドy座標 Field(x, y) = BLANK '空き picField(n).Picture = picKoma(BLANK).Picture If n = 27 Or n = 36 Then '#2 Field(x, y) = WHITE '白駒配置 picField(n).Picture = picKoma(WHITE).Picture ElseIf n = 28 Or n = 35 Then Field(x, y) = BLACK '黒駒配置 picField(n).Picture = picKoma(BLACK).Picture End If Next n lblMsg.Caption = JunbanMsg(Junban) '順番メッセージ lblShiro.Caption = "白の駒:2" '白黒取得メッセージ lblKuro.Caption = "黒の駒:2" lblMsg2.Caption = "ゲーム開始" 'ゲーム メッセージ End Sub
InitGameプロシージャでは、配置されたフィールド(picField)に空きの画像を設定している。また、フィールド状態記憶用の配列FieldもBLANKで初期化している。
#1 0〜63のフィールドの番号を8×8のx,y座標に変換(計算)している。
#2 この部分のIf文でゲームの初期状態である白と黒の駒を2個ずつ配置している。
実行するとグリーンのフィールドと中央に2個ずつ白と黒の駒が配置される。
次は、いよいよゲーム開始である。
(2) オブジェクトの初期化 | |
Copyright © 2002 Hiroshi Masuda |