プログラミング講座(25) イベント処理
ここでちょっと「イベント」について説明しておきます。前回の人が打つ処理 Human() の処理の始めに、
GraphicsWindow.MouseDown = OnMouseDown
という行(308行)がありますが、これはマウスボタンを押したときに一時的に何を行うか指定しています。マウスボタン操作、キーボード操作、タイマーなどの事象(event)について一時的な処理を指定できます。上記の例では、マウスの左ボタンが押されたときの処理として OnMouseDown というサブルーチンを指定しています。
以下のリスト8に沿って、詳細を説明します。
310行目で bNotClicked というフラグに "True" (真) を入れ、311~312行では、そのフラグを見ながら無限ループしています。イベントの処理がなければ、このループを抜け出ることはありませんが、308行で指定したサブルーチン OnMouseDown の中ではマウスの座標を取り出し bNotClicked フラグに "False" (偽)を入れているので、マウスが押されると、このループを抜け出すことができます。要するに311~312行はマウスが押されるまでループして待っているわけです。
ここで重要なのが312行の Program.Delay() です。この行がないと、コンピュータはただただループを回るためにCPUを消費してしまいます。この Delay を指定することで CPUの時間を解放し、システムや他のプログラムにCPUを利用する余裕を与えることができます。この囲碁プログラム自体には意味のないことですが、システム全体としてはバランスが取れるのです。
【リスト8 サブルーチン Human() の冒頭部分】
307 Sub Human
308 GraphicsWindow.MouseDown = OnMouseDown
309 While "True"
310 bNotClicked = "True"
311 While bNotClicked
312 Program.Delay(100)
313 EndWhile
314 GetPosition()
(つづく)
| 固定リンク
「Small Basic」カテゴリの記事
- プログラミング講座 (202) 1次元セルオートマトン(2020.09.20)
- プログラミング講座 (201) パラメーター(2020.09.14)
- プログラミング講座 (200) 3次ベジエ曲線(2020.09.14)
- プログラミング講座 (199) スーパー三角関数?(2020.09.02)
- プログラミング講座 (198) スーパー楕円(2020.09.01)
コメント