| 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秒後に自動的に回転がとまるようにしたフォームも掲載しましたのでご覧になってください。 |