何とか庵日誌

本名荒井が毒にも薬にもならないことを書きつづるところ

「ブロック攻撃」

f:id:fukenko:20200425205100p:plain


 「アクションゲーム38」の最後の方には、コンピューターゲームの古典となった作品がいくつか収録されています。というわけで今回はそのなかから「ブロック攻撃」ゲームのご紹介です。
 一言で言えばド定番のブロック崩しゲームです。パドルを操作してボールを打ち返し、画面内のブロックを全て壊すというアレですな。PCGとスプライトは未使用。画面は全てMSXのノーマルキャラのみで構成されています。壊すべきブロックは1ステージにつき95個。しかも大きさは1キャラ分(8x8ドット)。ブロック崩しのチマチマしたところが苦手な荒井としては、果たしてまともにクリアできるのかと疑いたくなる量です(おい)。もっとも、チマさはブロック崩しの宿命でもあるので、苦手な人間には致し方ないところでしょう。あと、よくあるブロック崩しと異なり、ボールは横に打ち返すようになっています。


f:id:fukenko:20200425205855p:plain
端っこで打てば鋭く軌道が変わる。
ここにリスク&リターンが生まれる。
 チマチマしたブロック崩し。スプライト未使用・ノーマルキャラベースゆえ、キャラクターの表示もスムーズではありません。しかしこのゲームがダメなのかといったら、決してそうではありません。それというのもこのゲーム、ボールの挙動がなかなかよいのです。
 基礎中の基礎ではあるのですが、まっとうなブロック崩しは、パドルの「ミートポイント」を判定しているものです。本作の場合、いちおうパドルのどこでボールを打ち返したかを見ており、それによって反射角度を変えているのです。
 具体的にはミート時のパドルとボールの座標を比較し、乱数を加味しつつ跳ね返る方向の増分を決める、という処理をしています。厳密な物理演算ではないものの、処理が短く済む上にそれらしく見えるので、ゲームとしてはこれで十分でしょう。また、表示単位こそ8x8ドットながら、内部では小数点単位*1で計算しているので、移動角度が意外と細かいのもミソです*2


f:id:fukenko:20200425205208p:plain
改造してパドルを延長。やられる気がしないぜ(泣)
 パドルのどこで打ったかによってボールの反射角度が変わる、というのはかなり重要なことです。ボールの挙動に変化が付くことで、プレイの単調さはだいぶ減ります。さらに当てる位置で軌道を変えられるということは、テクニック次第で狙い打ちが可能、ということでもあります。「全てのブロックを崩すまでボールを取りこぼさないよう打ち返す」だけのゲームが「意図的に当て方を変えることでブロックを狙いに行ける」ゲームになることはかなりの違いであり、進化とも言えます。
 本作はブロック崩しの基礎となる部分はきちんと押さえてあり、MSXのスクリーン1・ノーマルキャラという制約の中で、なかなか巧く組まれてある印象を受けました。なお、パドルの長さはプログラム内の変数を変えることで12キャラ分まで延長可能です*3。170行のLEの数値がパドルの長さですので、「短すぎてすぐやられる!」とお困りの方は、どうぞご参考に(おい)。

*1:座標データは単精度型変数で保持しています。

*2:でも8x8ドット単位で移動するからボール取りこぼしやすいけどな!(泣)

*3:ついでに左側のブロック群の間にボールが入るとパドルが1キャラ分短くなります。キツいが悪くないフィーチャーです。