ボールが当たったらブロックが消える

ボールが当たったらブロックが消える処理を実装します。

ボールはブロックに当たったか

そのためには、まずブロックにあたったかどうかを知る必要があります。

GetHitBlocksメソッドはループ文のなかでIsBlockHitメソッドをよびます。これでどのブロックに当たったか知ることができます。

まずすでに消されているブロックの当たり判定は必要ありません。なのでループ文のなかで

としています。

それからボールが当たったブロックが見つかったらそれ以外のブロックには当たっていないということになるので、どのブロックに当たったのかがわかるようにしています。戻り値は当たったブロックが見つかった場合はtrue、falseです。

SetBallDirectIfHitBlockメソッドはボールがブロックに当たったらボールの進行方向を変えるためのメソッドです。

ボールがどれかに当たっている場合はGetHitBlocksメソッドの戻り値でわかります。GetHitBlocksメソッドの戻り値がtrueだった場合は、isBreaked[row, colum] = trueとすることでボールがあたったブロックを消します。そしてボールの進行方向のY成分の符号を反転させます。

これで一応、ブロック崩しらしいものにはなりました。あとはミスの判定、回数を決めてそれ以上のミスをすればゲームオーバーにする、ボールがバーに当たった場合、反射角度が同じだが当たった場所によって変化をつけるなどをすればゲームとしても通用するものになると思われます。