カード・ゲームの制作 VB6
 (d) 標準モジュールの作成1 前へ 目次へ 次へ 

 VisualBASICのプログラム(コード)は、モジュールに保存される。一般にはフォームとセットになった「フォームモジュール」にフォームに配置されたオブジェクトとともに保存される(保存してきた)。このほか、VisualBASICには「標準モジュール」と「クラスモジュール」と呼ばれるものがある。ここでは、「標準モジュール」を使ってこれまでのプロシージャをまとめ、再利用できるようにする。次はVisualBASICのヘルプの引用である。

標準モジュール
 標準モジュール (ファイル拡張子は .BAS) には、アプリケーションの複数のモジュールから共通にアクセスできる宣言やプロシージャを記述します。このモジュールには、変数、定数、型、外部プロシージャおよびグローバル プロシージャの宣言を記述できます。これらは、アプリケーションのどこからも呼び出せるグローバル レベル、またはモジュール レベルで宣言することができます。標準モジュールに記述するコードは、特定のアプリケーションだけで使うとは限りません。フォームまたはコントロールを名前で参照しないように注意すると、標準モジュールをほかのアプリケーションで再利用できます。


 1. 標準モジュール

 例えば、図d-1のようにアプリケーションAとアプリケーションBの2つのプログラムを作成した。どちらのプログラムにも同じ処理内容のプロシージャZがあるとする。これまでにカードゲームように作成した「シャッフル」のプロシージャなどがこれにあたる。


図d-1

 アプリケーションAのときに作成したプロシージャZをアプリケーションBで利用する方法として、プロシージャZをコピー&貼り付けすることが考えられる。ここで、プロシージャZに不具合が発見されたときは、アプリケーションAとアプリケーションB両方のプロシージャZを修正する必要がある。
 プロシージャZは同じものなので、どこかにひとつだけ用意しておいて、アプリケーションAとアプリケーションB両方から利用できるようにできると便利である。

 ここで登場するのが、標準モジュールである。


図d-2

 図d-2のように、共有できるプロシージャZを標準モジュールとして作成し、アプリケーションAを作成するときにこの標準モジュールを追加する。同じように、アプリケーションBを作成するときにもこの標準モジュールを追加する。

 標準モジュールに作成するプロシージャは次のとおりである。

・Function Ransuu(min, max) As Integer  (b) 3.乱数
・Sub CARDShuffle(UsedCard As String)  (b) 4.カードシャッフル
・Sub CardMove(pic1 As PictureBox, pic2 As PictureBox)  (c) 2.カード配付(移動)
・Sub xwait(sec As Single)  (c) 2.時間待ち


 2. 標準モジュールの作成1

 ここでは、「(c) カードの配布(アニメーション)」で作成したテストプログラムを元に、カードゲームで共通に利用できるプロシージャを標準モジュールに作成する。

(@) VisualBASICのメニューから[プロジェクト(P)]→[標準モジュール(M)]を選択すると、図d-3のようなダイアログが表示される。[開く(O)]をクリックすると新しく、コードを入力するウィンドウModule1が開く。


図d-3

(A) フォームモジュール(Form1)からCardMoveとxwaitの2つのサブプロシージャを標準モジュールに移動する。


図d-4

(B) 標準モジュールに移動したCardMoveとxwaitのプロシージャの先頭(例、Private Sub CardMove(pic1 As PictureBox, pic2 As PictureBox))にある2カ所の“Private”を“Public”に変更する。(※1

(C) CardMoveプロシージャの引数の型を“PictureBox”から“Object”に変更する。(※2

(D) メニューから[ファイル(F)]→[名前を付けてModule1の保存(A)...]を選択する。ファイル名を「CardGame.bas」 として保存する。


図d-5

 次のページで、残りのプロシージャを標準モジュールとして作成する。


※1
 “Private”はモジュール内だけで有効である(参照できる)ことを表し、“Public”はプロジェクト全体で有効であることを表す。この変更をしない(Privateのまま)で実行し、[移動]ボタンをクリックするとエラーが発生する。
※2
 画像はPictureボックスとImageボックスで扱えるが、引数の型が“PictureBox”であるからCardMoveプロシージャの引数にImageボックスを指定するとエラーになる。PictureボックスもImageボックスもオブジェクトであるから引数の型を“Object”にしておくと、どちらを引数にしてもエラーにならない。


 (d) 標準モジュールの作成1 前へ 目次へ 次へ 
Copyright © 2004 Hiroshi Masuda 

 

 

inserted by FC2 system