§2 モグラたたきゲームの制作 VB6
 (2) プログラムでオブジェクトを作る(追加する) 前へ 目次へ 次へ 

 さて、残りの1から8までのボタンは、プログラム中で追加することにする。
 9個ぐらいのオブジェクトであれば、デザイン時に配置しても問題はないが、複雑なプログラムでオブジェクトが数多く必要なときのためにプログラムでの追加方法を見ておく。
 オブジェクトの追加には、Load命令を使う。

Load オブジェクト

 実際の使い方についてはプログラムリストで説明する。
 ボタンを8個配置するプログラムは、最初の一度だけでよいので、Form_Loadプロシージャに書くことにする。

・プログラムリスト

Const MoguraMax = 8    '(#1)

Private Sub Form_Load()
    Dim n As Integer

    Command1(0).BackColor = QBColor(8)        '(#2)ボタンの色
    For n = 1 To MoguraMax
        Load Command1(n)        '(#3)新しくボタンのオブジェクトを作る
        '新しいボタンのX(Left), Y(Top)座標
        Command1(n).Left = (Command1(0).Width + 120) * (n Mod 3) + 120
        Command1(n).Top = (Command1(0).Height + 120) * Int(n / 3) + 120
        Command1(n).Caption = Str(n)          '数字表示
        Command1(n).BackColor = QBColor(8)    'ボタンの色
        Command1(n).Visible = True            'ボタンを表示させる
    Next n
End Sub

(#1) Const キーワード
 1行目のConstは、文字列を定数として扱うための定義である。ここでは、MoguraMaxという名前に定数8を設定している。プログラム中でモグラの最大数を参照するとき、変数と同じようにMoguraMaxと書けば参照することができる。ただし、変数ではない(定数である)ので等号(=)の左辺に書くことはできない。
 モグラの数を変更するときは、ここだけを変更すればよい。

(#2) 配置済みのボタンの色設定
 配置済みのボタンのオブジェクト名はCommand1(0)である。このボタンの色を灰色に設定している。

* QBColor 関数
 通常、色はRgb関数を使い、赤緑青の三原色をそれぞれ0から255までの整数で指定する。例えば赤は、Rgb(255,0,0)と書く。
 QBColor関数は、昔のBASICで使われていたColor命令と同じように使えるものとして用意されている。引数に0から15の整数を指定して使う。番号と色の関係は次の表の通りである。
番号 番号 番号 番号
0 4 8 灰色 12 明るい赤
1 5 マゼンタ 9 明るい青 13 明るいマゼンタ
2 6 10 明るい緑 14 明るい黄
3 シアン 7 11 明るいシアン 15 明るい白

(#3) オブジェクトの作成
 オブジェクトの作成にはLoad命令を使う。コントロール配列にする場合には配列の添字も付けて指定する。ここでは変数nの値を添字として利用している。
 Load命令で作成したオブジェクトは、配置場所(座標Top, Left)や表示設定(Visible)のプロパティが設定されていないので表示されない。オブジェクトの作成とともに適切にプロパティを設定する必要がある。ここでは、オブジェクト作成の後で配置する座標(TopとLeft)、ボタンに表示する文字列(Caption)、ボタンの色(BackColor)、表示設定(Visible)の各プロパティを設定している。
 ボタンは3×3で配置する。ボタンの座標計算は次のように考える。


座標計算

 上の図より、3×3のときのn番目のボタンの座標(Xn, Yn)は次の計算式で求められる。

余り : A = n Mod 3
商 : S = Int(n / 3)
Xn = (Command1(0).Width + 120) * A + 120
Yn = (Command1(0).Heght + 120) * S + 120
オブジェクトのプロパティ設定について
 プログラムで設定すべきプロパティが多い場合は、Withキーワードを使うことができる。このプログラムの場合、Withを使うと次のように書くことができる。
With Command1(n)
    .Left = (Command1(0).Width + 120) * (n Mod 3) + 120
    .Top = (Command1(0).Height + 120) * Int(n / 3) + 120
    .Caption = Str(n)          '数字表示
    .BackColor = QBColor(8)    'ボタンの色
    .Visible = True            'ボタンを表示させる
End With


 (2) プログラムでオブジェクトを作る(追加する) 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system