5-11節 で作成したスロットマシンを、Timer を使って改良してみましょう。
次のようなプログラムを作ってみましょう。
まず、上のようなフォームを作成し、各コンポーネントのNameプロパティを次に様に指定してください。
コンポーネント | Name |
---|---|
左のスピンエディット | SpinEditLeft |
中央のスピンエディット | SpinEditCenter |
右のスピンエディット | SpinEditRight |
開始ボタン | ButtonStart |
停止ボタン | ButtonStop |
続いて Timer コンポーネントのプロパティを次のように指定してください。
プロパティ | 値 |
---|---|
Name | TimerSlot |
Interval | 100 |
Enabled | False |
これまで同様、[開始] および [停止] ボタンのイベントハンドラは、次の様になります。
今の場合、OnTimer イベントの処理は、3つの乱数の値を、SpinEdit に表示させるという処理なので、次の様になります。
これで、数字がパラパラと変わって表示されるはずです。動作を確認してください。
次に、3つの数字が揃った場合には、「大当たり!」、それ以外の場合は「はずれ!」と表示する部分を付け加えましょう。
まず、判定欄の Edit をフォームに貼り付け、Name プロパティを「EditHantei」としてください。(数字が揃っているかどうかの) 判定は、[停止] ボタンのイベントハンドラ内で行われます。以下の空欄を埋めてプログラムを完成させてください。
※ 判定表示させるように変更したことに応じて、[開始] ボタンのイベントハンドラに、(以前の) 判定を消去する部分を付け加えることを忘れないでください。
【応用課題6-4】では、0〜2の数字を表示させましたが、これを p.122 のように3つのパネルの色が変わるように修正してください。
3つの乱数の値を、3つのパネルの色に割り当てる処方は、【応用課題5-2】と全く同様です。今の場合、それを OnTimer イベントの中で行うという部分が異なるだけです。
パネルの色を次々に変えるという処方を応用して、次のような簡易ルーレットを作ってください。
動作内容は次の通りです。プログラムを起動すると、下のフォームが現れます。
ここで、[開始] ボタンをクリックすると、点灯している部分 (黄色の部分) が時計回りに移動し、[停止] ボタンをクリックした時の位置によって、次のように得点が表示されるというものです。
点灯していない部分 (パネル) の色は「clBtnFace」としています。
なお、[開始] ボタンをクリックすると最上部の位置つまり100点の位置から新たに始まるものとします。
まず、自分でどのようにプログラミングすれば良いかを考えてください。ポイントは OnTimer イベントのイベントハンドラをどのように記述するか、です。どうしても分からない場合は下のヒントを参照してください。
Num 1 2 3 4
位置 上 右 下 左