Javascriptゲーム04 step 1

ネズミを池の中へ落として追い出すゲーム。
マウスでネズミをポイント、クリック等するとランダムに動く。
チーズは、[Alt]+矢印キーで移動できる。 チーズを移動すると、ネズミが寄ってくる。 (Firefox用)
background
ねずみ1
ねずみ2
cheese

解説

ゲームらしくするために、チーズを導入した。チーズは、[Ctrl]+矢印キーで上下左右に移動可能である。チーズを移動するたびに、ネズミがチーズに近づく。チーズを使って、ネズミを池に誘い込むというゲームにした。

このために、以下の機能を追加しなければならない:

  1. [Alt]+矢印キーでチーズを上下左右に動かす。
  2. チーズが動いたとき、ネズミをチーズに近づける。
  3. ネズミがチーズを食べたときの処理
  4. チーズが池に落ちたときの処理

2のネズミをチーズに近づける処理を実装するために、ネズミがランダムに動くだけではだめである。 ネズミを指定した方向へ動かすことができるように、まずは宿題03のプログラムを書き換えるところから始めよう。

1. [Alt]+矢印キーでチーズを上下左右に動かす

イベントハンドラーと同様に、イベントの発生に対応して関数を呼び出す方法に、イベントリスナーを使用する方法がある。 キーボードのキーを押すというイベントの発生に対して、チーズを移動するという仕組みをイベントリスナーを使って実装しよう。

Firefoxでは、キーを押す(keydown)というイベントの発生に対してKeyDownFunc()という関数を呼び出すイベントリスナーは、

document.addEventListener("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)を呼び出して、チーズを動かしている。