Javascriptゲーム04 step 3

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

解説

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

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

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

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

3. ネズミがチーズを食べたときの処理

関数function check_cheese(element)を、引数elementがチーズと重なる場合は1、そうでない場合は0を返すように定義している。
randomove(nezumi1, D_nezumi)やmove2cheese(nezumi1, D_nezumi/2)で、ネズミを動かしたとき、check_cheese()を呼び出してチェックしている。

// 位置が変更されたネズミがチーズとぶつかったか否かを判定
if( check_cheese(element) == 1 ){
	alert("Thanks for the cheese!");
	cheese.style.display = "none";
}

ネズミがチーズに重なったときは、cheese.style.display = "none"によって、チーズを非表示にしている。
チーズを非表示にするだけではなく、document.removeEventListner("keydown" , KeyDownFunc, true)を実行して、イベントリスナーを解除した方がよい場合もある。