ACCESSでスロットマシーンを作ってみよう。
さて、何やら最近は堅苦しいアプリケーションばかり作っているせいか、ここらでちょっと息抜きをしたい雰囲気ですね。
 そこで、ACCESSでゲームなんぞは、どーだろうかと思ってるわけです。
もっともVBと違ってACCESSはOfficeのひとつであることからすれば、「仕事のために使うソフト」だろうから、これでゲームというのは、「掟破り」かもしれませんがでも、やっぱやってみたくなりますよね。
 さて、ゲームの基本は何といってもランダム関数=Rnd関数ですね。つまり乱数を発生させるわけです。何が出るかわからない。これぞまさにゲームの真骨頂という訳です。
では、今回はこのRnd関数とTimerイベントを使って「スロットマシーン」づくりにチャレンジしてみましょう。
 まず、任意のフォームを作成し、3つのテキストボックスを配置します。これだけでスロットの雰囲気が出てきましたね。そして、そのテキストボックスにそれぞれ、「aa」「bb」「cc」と名前をつけます。
 次にフォームのタイマー時のイベントプロシージャにそれぞれランダムな値が入るようにします。下記では、1〜5までの値をランダムに出すようにしています。この値は変えることが可能です。
 次にこの値をどのくらいの速さで回転(実は点滅しているのですが回転しているように見える)させるかということで、コマンドボタン2をクリックしたらスタートさせるようにしました。
Me.TimerIntervalというのが時間間隔です。ここでは100ミリ秒に設定しました。
回数とありますが、これは回った数を減算するように設定しました。
つまり持点と考えてください。テキストボックスの規定値を50にして50から回った数だけ減っていくようにしました。
次にコマンドボタン3にストップボタンをつくりました。
Me.TimerIntervalを「0」にすると回転はとまります。
ここで、もし目がそろったら、それぞれの数字の色を「青色」にしてその下に「FEAVER!!」と表示させるようにします。
さらに点数は10点追加されます。
こうしてスロットを繰り返し、点数がなくなったら「持点がありません」と表示し、以後「スタート」ボタンを押しても動かなくするようにします。
フォームのクラスモジュールには次のように記述しています。
'-------------------------------------------------------------
Private Sub Form_Timer()
Randomize

Me!aa.Value = Int(5 * Rnd) + 1
Me!bb.Value = Int(5 * Rnd) + 1
Me!cc.Value = Int(5 * Rnd) + 1

End Sub
'-------------------------------------------------------------
Private Sub コマンド2_Click()

If Me!回数 = 0 Then
Exit Sub
End If

Me!回数 = Me!回数 - 1
Me!logo = ""

Me!aa.ForeColor = 0
Me!bb.ForeColor = 0
Me!cc.ForeColor = 0

Me.TimerInterval = 100

End Sub
'-------------------------------------------------------------
Private Sub コマンド3_Click()
Me.TimerInterval = 0

If Me!aa = Me!bb And Me!bb = Me!cc Then
Me!aa.ForeColor = 16711680
Me!bb.ForeColor = 16711680
Me!cc.ForeColor = 16711680
Me!logo = "FEAVER!!"
Me!回数 = Me!回数 + 10
End If

If Me!回数 = 0 Then
Me!logo = "持点がありません"
End If

End Sub
'-------------------------------------------------------------
まあ、非常に単純なスロットマシーンですが、結構ひまつぶしにはなるかも。
このほかサンプルには、ストップボタンを作らず、スタートから3秒後に自動的に回転がとまるようにしたフォームも掲載しましたのでご覧になってください。