モンスターとの当たり判定

今回はモンスターとの当たり判定を考えることにします。

ダメなコード

パックマンとモンスターが同じセルにいる場合はモンスターに捕まったと考えればよいと考え、このようなコードを書いてみました。

タイマーのTickイベントを処理したあと、移動したパックマンとモンスターがいるセルを比較しているのですが、これではうまくいかない場合があります。止まっているときにモンスターが来た場合は当たり判定がとれるのですが、移動している場合はすれ違ってしまうことがあるのです。(本物のパックマンでもたまにすれ違ってミスにならない場合がある)

すれ違いも当たり判定とするには

すれ違いも捕まったことにする場合はどうすればいいのでしょうか?

「隣り合っている場合で、両者が接近する方向に移動しようとしている場合も当たりと判定する」というのはどうでしょうか?

ゲームオーバーの処理

最後にゲームオーバーの処理をつくります。

ゲームスタート時の残機は「3」とし、モンスターにつかまるたびに1減らします。残機が存在する場合はパックマンとモンスターをもとの位置にもどしてゲームを再開します。残機0になったらゲームオーバーです。

パックマンはパワー餌を食べると、その効果が持続しているあいだはモンスターを食べることができます。この処理は次回にすることに・・・。