何とか庵日誌

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

春の一画面プログラム祭

 ここ数年は大作を中心に入力していましたが、大作ばかりがプログラムではありません。モニタの1画面にリストが収まってしまうショートプログラムは「1画面プログラム」と呼ばれる一ジャンルを築いています*1。中でも「プログラムポシェット」や「MSXファン」といった徳間系のパソコン雑誌では盛んに採りあげられ、毎号のようにユニークな作品が掲載されたものでした。そういわけで今回はここしばらく入力していた1画面プログラムのご紹介です。どれもMファン88年5月号掲載です。


f:id:fukenko:20160309150822p:plain
f:id:fukenko:20160309151008p:plain


 一本目「ミステリアスゾーン」はプラットフォーマーアクション。主人公パックンを操り、敵をかわしながら画面の右端まで行けば面クリアです。このゲームがすごいのは、1画面にもかかわらず、6種類のパターンが異なる敵と、100ものステージ数を誇ること。シンプルながらパターンが豊富で飽きさせません。
 1画面でそんな膨大なステージを実現できた秘密は「疑似乱数」です。MSXに限らず、当時のパソコンに備わっていた乱数発生関数は、同じ引数を与え続ける限り、毎度同じ順番で同じ数値を返すというものでした。毎度違う乱数が欲しい場合は、適当に引数を変えてやって乱数の周期を変える必要があったのですが、逆に言えば「同じ引数を与える限り同じ結果が同じ順序で得られる」ということです。この特性を利用すれば、同じ地形やパターンが決まった順番で出てこないと困るようなステージデータを、データを持たずして生成できますので、一画面プログラムではよく見かけるテクニックでした。


f:id:fukenko:20160309150913p:plain


 二本目「Doつきあい」は、対戦アクションゲームです。体当たりして相手を画面の枠にぶつけ、体力をすっかり無くせば勝ちです。二人プレイ専用なので、一人で遊ぶと空しいです(おい)。FOR~NEXTループを使い、一つの処理で二人分のキー入力・移動処理をやっているところが工夫です。


f:id:fukenko:20160309150929p:plain


 三本目はパズルゲーム「D・MAZE」。+と-のブロックを交互に取って道を作りながら、ゴールを目指します。こちらはステージ構成が複雑なため、さすがに乱数生成できなかったようですが、それでもなんと6面が用意されています。敵などは出てこないため、じっくりとパズルに専念したいプレイヤーに嬉しい作りです。ばっちり6面クリアしてしまったぜ。


f:id:fukenko:20160309150947p:plain


 四本目「ぐぅいん」は不思議な感覚のワンキーアクションゲーム。「ヨッパライ」方式で移動する自機を操り、敵をかわしながら画面を往復する回数を競います。スピード感と動きの良さ、そして効果音の気持ちよさで、シンプルながら中毒性の高い一本。テンポはゲームの命です(おい)。


f:id:fukenko:20160309150955p:plain
f:id:fukenko:20160309151018p:plain


 五本目「HI-JUMP」もワンキーアクション。溜めジャンプをうまく使って立ち並ぶ壁を飛び越え、一路会社を目指します。ジャンプの高さは溜め時間の長さに比例します。低くても高くても壁にドカンとなるため頃合いを見計らうのが大切です。コレがなかなか難しいのですが、見事決まると気持ちよいです。MSX2専用であるため、画面がけっこうきれいなのがグッド。放物線を描く自機の軌道が美しいです。
 ところでこのプログラム、画面初期化処理に不備がありまして、MSX2の設定次第では、誌面どおりに打ち込んでも当たり判定がおかしくなって、正常動作してくれません。10行冒頭の「COLOR15,0」を「COLOR15,0,0」にすれば直せるのですが、そうなるとリストが1画面に収まらなくなるので、こだわりたい方は10行末尾の「J=0」を20行の頭に移せばOKです。


f:id:fukenko:20160309151029p:plain


 最後の六本目は「やさいぼーぐ」。「Doつきあい」に通じる押しくらまんじゅうアクションゲーム。こちらは一人プレイ専用なのでぼっちでも楽しく遊べます(おい)。相手を突き飛ばして土俵から落とせばこちらの勝ち。相手より少しでも高い位置からぶつかればはじき飛ばせます。この単純明快な攻防がなかなかアツく、夢中になってしばらく遊びこんでしまいました。全4ステージでオールクリアするとエンディングもあるんですが、面が進むごとに敵がどんどん強くなるため、荒井は3面以降に進めません(泣)。


 今回久々に1画面プログラムをとっくり入力して遊んでみたのですが、どれもアイディアやルールが巧くて、予想以上の出来の良さに改めて驚かされました。1画面プログラムには、必要最小限に絞らざるを得ないゆえの潔さと、それゆえに凝縮された面白さがあります。未入力の1画面プログラムはまだまだ残っているので、これからも折を見てちょくちょく入力してこうと思います。

*1:MSX場合はMSX1のSCREEN0の最大文字表示数である40x24=960字まで・改行抜きで24行以内となります。