やっとブロックが出ます!!
前回まで、壁うちのテニスでしたが、 今回やっとブロックを出すことに成功しました!
ブロックを出すには以下のサブルーチンを使っています。
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のダウンロード