ゲームらしくするために、チーズを導入した。チーズは、[Ctrl]+矢印キーで上下左右に移動可能である。チーズを移動するたびに、ネズミがチーズに近づく。チーズを使って、ネズミを池に誘い込むというゲームにした。
このために、以下の機能を追加しなければならない:
2のネズミをチーズに近づける処理を実装するために、ネズミがランダムに動くだけではだめである。 ネズミを指定した方向へ動かすことができるように、まずは宿題03のプログラムを書き換えるところから始めよう。
イベントハンドラーと同様に、イベントの発生に対応して関数を呼び出す方法に、イベントリスナーを使用する方法がある。 キーボードのキーを押すというイベントの発生に対して、チーズを移動するという仕組みをイベントリスナーを使って実装しよう。
Firefoxでは、キーを押す(keydown)というイベントの発生に対してKeyDownFunc()という関数を呼び出すイベントリスナーは、
によって設定して開始する。
function KeyDownFunc(e)の定義では、
//console.log("code:" + key_code); //console.log("shift:" + shift_key); //console.log("ctrl" + ctrl_key); //console.log("alt:" + alt_key);
とコメントアウトしてある部分のコメントを解除すると、キーが押されたときにkey_codeの値をFirefoxのWebコンソールのロギングで確認できる。 これを利用して、[→]、[←]、[↓]、[↑]キーを押したときのキーのコードを調べて、チーズを動かす関数move_cheese(dx, dy)を呼び出して、チーズを動かしている。