HSP教室 入門編

その12 ブロック崩しを作ろう(4)

やっとブロックが出ます!!

前回まで、壁うちのテニスでしたが、 今回やっとブロックを出すことに成功しました!
ブロックを出すには以下のサブルーチンを使っています。

1)当たり判定 *blcky
2)当たり判定 *blckx
3)表示 *allbl

*blckyと*blckxは、ほとんど同じスクリプトですが、反射の方向が違います。
縦と横です。

当たり判定は、ブロックが80*20のサイズで隙間なく並んでいる仕様なので、
座標を割り算して行っています。

「if (bx<19)|(bx>579):return
if (by<39)|(by>119):return」
最初に、ブロックの表示されない部分を除外します。

「xof=(bx-20)/80:yof=(by-40)/20」これが、割り算です。
ボールがブロックのどの位置にあたるかを見ています。
そして、「 i=yof*7+xof」と「code=peek (nowmap,i)」でマップデータを見るのです。
文字が'0'なら空白。'1'ならブロックが有る状態です。
ブロックにボールが当たったら、マップを書き換えて、
ボールの変化率をプラスならマイナスへ、マイナスならプラスへ変えます。

ちなみに、今回のスクリプトでは全てのブロックを消すと、ブロックがもとに戻るようになっています。
表示部分で、表示したブロックを変数ccで数えています。

さて、ブロック崩しは今回で終わりです。
最後はすごく長いスクリプトになってしまいましたが、
構造としては前回までのものと同じですから、そちらと比べて見るのもいいでしょう。

今回、すべてのスクリプトを載せるには少々長くなってしまったので、ダウンロード出来るようにしました。
sample12.zipのダウンロード


その13に行く

目次に戻る