UFOゲームの制作 VB6 | |
(2) オブジェクトの初期化(作成) T |
1. 敵などの作成
自機や自機の残り数と得点表示用のラベルを図2-1-1のように配置する処理を作る。
ゲームの初期状態なので起動時や再スタート時に使うことになるので、サブプロシージャInitGameとしてプログラムし、Form_Loadプロシージャから呼び出すことにする。
図 2-1-1
・プログラムリスト その1
定数とグローバル変数を定義する。
Option Explicit '定数 Const MaxTeki = 47 '#1 8列*6行-1=47 Const MaxTaihou = 2 '#1 自機数3個(3-1=2) Const MaxTama = 2 '#1 自機弾数3個(3-1=2) 'グローバル変数 Dim TaihouNokori As Integer '#2 自機の数 Private Sub Form_Load() '#3 ウインドウサイズの設定(800×600) Form1.Height = 12000 'ウィンドウサイズ(幅800*15) Form1.Width = 9000 'ウィンドウサイズ(高さ600*15) Randomize '#4 乱数初期化 TaihouNokori = MaxTaihou '#5 自機残り数設定 MakeObject '#6 オブジェクト(部品)の作成 InitGame '#7 ゲームの初期化 lblTokuten.Top = 120 '得点表示座標設定 lblTokuten.Left = Form1.ScaleWidth - lblTokuten.Width - 60 End Sub
#1 MaxTeki に敵の最大数、MaxTaihouに自機の最大数、MaxTamaに自機が発射できる弾の最大数をそれぞれ定義する。自機が発射できる弾数を3発に制限している。すなわち、MaxTama個以上の自機弾を連続して発射できないようにする。
#2 自機の残り数をグローバル変数TaihouNokoriに記憶させる。グローバル変数はこのプログラムのすべてのサブプロシージャとファンクションプロシージャの中で参照することができる変数である。
#3 ゲーム実行時のウィンドウサイズを設定している。VisualBASICではサイズの単位にtwipが使われている。1ピクセル(ドット)は15twipに相当する。 1ピクセル = 15twip
#4 ときどき現れるUFOなどの出現を決めるため乱数を使う予定であるので、ここで乱数を初期化しておく。
#5 グローバル変数TaihouNokoriに自機の残り数を設定する。自機の残り数はやられるたびに1ずつ減っていく。
#6,7 敵はフォーム上に4個しか用意していない。このサブプロシージャMakeObjectで必要な数の部品(オブジェクト)を作成して、各部品を配置するサブプロシージャInitGameを呼び出す。
・プログラムリスト その2(プロシージャMakeObject)
Private Sub MakeObject() 'オブジェクトの作成 Dim n As Integer For n = 1 To MaxTeki '二つ目以降(MaxTeki個分)を作成 Load imgTeki(n) '敵作成 Load imgTama2(n) '敵弾作成 Next n For n = 1 To MaxTama '二つ目以降(MaxTama個分)を作成 Load imgTama1(n) '自機弾作成 Next n End Sub
プログラム中で部品(オブジェクト)を作成するには、Load命令を使う。それぞれの部品はコントロール配列(部品を配列として扱う)としており、0番目の部品はフォーム上に用意したので、1番目から作成している(For n=1 To ・・・)。
追加して用意する部品は敵と敵の持ち弾をMaxTeki-1個、自機の弾をMaxTama-1個作成する(1個目は配列0番として作成済み)。
各部品を配置するサブプロシージャInitGameは、ゲームスタート時、再スタート時に呼び出すので、この中で部品を作成すると、再スタートのときすでに部品が作成されているのでエラーになる。そのため、部品の作成と配置の処理を分けている。
【注意】 実行しても、InitGameがないというエラーが出る。InitGameは次ページで作成する。
(2) オブジェクトの初期化(作成) T | |
Copyright © 2002 Hiroshi Masuda |