「地雷スイーパー」開発日誌 #02 衝突処理は難しい……

自機とブロックのスプライトを表示させた程度で喜んでいたのもつかの間、自機とブロックの衝突処理がややこしくて詰まっています(といっても30分程度ですが、この調子だとまだまだ時間かかりそう)。

衝突しているかどうかの判定と、衝突している場合に重ならないように押し戻す処理を試行錯誤していたわけですが、ゲームでは必須に近い処理でありながらスマートな方法がよく分からず、毎回その場で考えて書いています。「自機の左上がブロックと衝突している場合は、X軸方向の速度が負ならブロックの右側まで押し戻して、それでも重なる場合はY軸方向を……」みたいな感じで。でも、ブロックを突き抜けたり、プルプルしたり、ワープしたり……。思うようには動いてくれません。誰が言ったか知りませんが「プログラムは思った通りに動かない。書いた通りに動く。」という格言が耳に痛いです。

いつも行き当たりばったりなのでうまくいかないことも多いけど、それでもデバッグプリントを活用して何とかするという力技でどうにかしようとしてしまい、それでも長時間どうにもならなければ、やっと落ち着いてまじめに考えるという感じです。スマートなプログラミングには程遠い……。