ゲームプログラムでは、プログラムの実行中にコントローラーなどの入力が割り込んできます。
いつ来るかわからない入力をプログラム側で処理するにはどうしたらよいのでしょうか?
主に以下の2つのやり方があります。
- 定期的に見に行く
- 教えてもらう
■定期的に見に行く
プログラムの各所で「ボタンが押されているか」を毎回調べます。
一つ一つのプログラムを「いまボタンが押されていたら処理する」というように単純に書けますが、押されていない時でも調べに行くため、ムダが多くなります。
小さなプログラムであれば、このやり方でも問題ありません。
■教えてもらう
予めコントローラーに対して、「ボタンが押されたらこの処理を呼んでね」と伝えておきます。
ボタンが押された時だけ、伝えておいた処理が呼ばれます。
元の処理とは繋がっていないので、どうにかして元の処理に押されたことを伝える必要があります。
そのためには以下のような方法が考えられます。
- 共有の場所に「押されたボタン」を書き込んでおく
- 元の処理を強制的に止めて、別の処理に切り替える
入力が無い時には何もしないのでムダが少ないですが、プログラムを書くのは難しくなります。
目次
もっと深く学びたい方へ
「定期的に見に行く」やり方を「ポーリング」、「教えてもらう」やり方を「イベント」または「コールバック」と呼びます。
入力以外に通信処理などもこれらの方法で作られています。
コメント