【JavaScript/DHTMLのポイント】 |
|
芋虫ゲーム
- ロードが終わるとInit()関数がレイヤを設定したあと、部屋のレイヤ、タイトルのレイヤ、得点表示のレイヤを所定の位置に移動し表示します。
その後、得点(0点)を表示してからデモ用にStart()関数を使ってゲームを開始します。
- Start()関数は芋虫と果物を非表示にし、得点をリセットしたあと、乱数を使い芋虫の進む方向(Dir)を決め、乱数を使って芋虫の頭の位置(X[0],Y[0])を決めます。
このときIsCollidedWithRoom()関数を使って芋虫の頭が部屋の壁にぶつからない位置を探します。
その後 芋虫の長さを1にして所定の位置に頭を移動して表示し、得点も表示後タイマーを使ってTimeOut()関数を周期的に呼びます。
- タイマー指定の時間が来るとTimeOut()関数が呼ばれます。TimeOut()関数はまず果物が表示されているか調べ、表示されていないときはSelectFruits()関数で果物を選択配置後再びタイマーを起動してTimeOut()関数を呼びます。
- 果物が既に配置されているときはGoAhead()関数を呼び芋虫を指定の方向に進めます。胴体の位置を一つ前の胴体の位置に変更し、最後に頭の位置を指定方向に移動します。
頭の絵も進む方向に応じて変更します。
- 一つ前進後、頭が部屋の壁か自分自身の胴体にぶつかっていないかIsCollidedWithRoom()関数とIsCollidedWithBody()関数で調べ、ぶつかっていると"Game Over"の表示をし、タイマーを起動しないことでゲーム終了します。
- 頭が部屋の壁にも自分自身の胴体にもぶつかっていない時は果物にぶつかっていないかIsCollidedWithFruit()関数でしらべ、ぶつかっているときはGetScore()関数で得点処理をし、果物を消しタイマーを起動してTimeOut()関数を呼びます。
- GetScore()関数では果物番号(Fn)+1分得点と芋虫の胴体の数を増やします。ただFn=3の時には胴体数を半分に減らします。
胴体の数が40になるとボーナス点20をもらいますが速度も速くなります。また得点も100点ごとに速度が速くなります。
- 「左折」「右折」ボタンを押すとそれぞれ進む向きを示すDirの値を3または1増加したあと4の剰余をとり変更します。この値は次のタイムアウトの時にGoAhead()関数で使われて有効になります。
- 得点の表示はDispScore()関数で行われますが、核桁の数次に応じてイメージを変更します。10の桁、100の桁は不要の時は非表示にします。
Java Script事例集トップページへ
鴈野さんちのHomePage TOPへ
ご感想などは鴈野 敏生 まで。