レーザーをスプライトに変えてみた。 見た目は同じだけど速度的には厳しい。 #petitcom
終わりにするつもりでしたが、レーザー撃つプログラム帰ってきました。レーザーはグラフィックで書けということでグラフィック面にGLINE命令で表示していましたが、気になったのでスプライトで撃ってみました。見た目は同じになるように作っているので違いはありません。普通に作るとスプライト表示枚数が厳しいことが分かっているので、スプライトのサイズを可変にしてみました。レーザーの最大長は64ドット幅スプライト3個分の192ドットになります。(グラフィックのときより少し短くなっています。)16ドットごと伸びていくようにしています。1本のレーザーに最大4枚のスプライトが使われます。そのためオプション最大数は15個に減らしています。(以前は20個、実は30個でも動く)こうすると分かりやすいでしょうか?スプライト1枚ごとに色を変えています。複数のスプライトを組み合わせて長いレーザーを表現しています。中央の4色に分かれているレーザーで、4枚のスプライトを利用していることが分かります。64+64+32+16ドットになっています。最終的には64+64+64(一番下のレーザー)になります。プログラム的にはグラフィック版のレーザー出力部をスプライトに置き換えただけなので全く最適化されていません。そのため、動作速度はかなり落ちています。また、全てのレーザーを重ねてもスプライト欠けはなさそうに見えます。消えていても気づかないかもしれませんが...少なくとも同一線上の敵キャラは消えませんでした。すごーく遅くてもきちんと動くのがプチコンの良いところですね。衝突判定のことを考えるとスプライトを用いたほうが良いのですが根本的に作り直さないと速度を上げるのは難しそうです。結局、つづく...のか?