第3回:『アストラルメイズ』の巻

ホシロンくん

2週間のご無沙汰でした

皆様、ぴゅう太はお買い上げなされましたか? ん? 今回はぴゅう太用拡張BASIC言語であるBASIC1につきまして、そしてぴゅう太買えやソフト第三弾「アストラルメイズ」について作文させて頂きたく存じます。何卒、宜しくお願い申し上げます。

BASIC1とは

ぴゅう太には入門向けのプログラミング言語である日本語G-BASICが搭載されておりますことは、第一回の本作文にて書かせて頂きました。また、100ステップほどで一杯となってしまうメモリ上限や数が少なめな命令郡、G-GRAPHICとの素晴らしき連携などにつきましても書かせて頂きました。BASIC1は日本語G-BASICが抱えていた諸問題をG-GRAPHICとの連携を切ることによって解決し、英語表記にて他のBASICにより近くなっております。

素晴らしきBASIC1の世界

BASIC1にて強化された命令などをざっとご紹介申し上げます。

日本語G-BASICでは乱数だけであった関数の種類が、三角関数や絶対値、平方根、文字列の切り出しやキャラクタコードの返しなど大幅に増えております。またDEF文により、関数のユーザー定義も可能です。

INPUT文によるキーボードからの入力が可能となり、入力された数値と文字列をプログラム内で扱えるようになりました。

PRINT文が日本語G-BASICでのカケ文と異なり、背景色文字色変更不可スペース含めた8文字表示のみという束縛が無くなりました。ただしLOCATE文がない上に、カケ文では可能だったセル番号による表示位置指定が不可となっている為、指定位置に文字や数値を表示したい場合は、後述するSCELLをはじめとしたセル制御命令と文字列関連の関数などとの組み合わせにて工夫が必要となります。

条件分岐が強化されています。IF文にELSEの使用が可能、またON~GOSUB文も追加されております。

DIMによる配列変数の宣言、READ文及びDATA文が追加されています。

G-GRAPHICと切り離されている為、セルの内容をプログラム文中にて定義し、表示する必要があります。SCELLやMCELL、GCELLといったセル内容の表示、定義、キャラクタコード読み出し命令が追加されています。

SOUND文が追加され、ユーザーによる任意の音の出力が可能となっています。MMLによる記述ではなく、音の長さと周波数、音量を数値で指定します。また三重和音が可能となってはおりますが、ひとつのSOUND文にて音の長さの指定はひとつのみ。同じタイミングと長さで三重の音が出力されるため、3種類のメロディーを同時に演奏できるわけではありません。

日本語G-BASICでは不可能だった、SCREEN文による背景色の変更が可能となっています。ぴゅう太のフルカラー16色グラフィックを活かすには非常にありがたい変更点だと感じます。

アニメ(スプライト)やタイマー命令、カタカナ(濁点含む)が使用不可となっています。

マルチステートメント記述が可能となっています。また入力はラインエディタのままではありますが、プログラムの一文一文が長くなることもあってか、編集機能がかなり強化されています。BASIC1用のキーボードオーバーレイが用意され、キーの組み合わせによってデリートとインサートが可能です。またシフトロック機能も追加されています。

カセットテープでの読み出し書き出しが、速度向上しています。

G-GRAPHICとの連携を切られてしまった

冒頭にて記述致しましたとおり、BASIC1はG-GRAPHICから切り離されており、呼び出しができません。またBASIC1使用時でもメニューにてG-GRAPHICを選んで絵を描き、保存や読み出しは可能であり、またテープの速度向上の恩恵も受けます。が、あくまでもG-GRAPHICは単体にて動き、コマンドメニューから英語記述となるG-BASIC(BASIC1ではない)の呼び出し自体は可能なものの、プログラミングは実質不可です。

G-GRAPHICを切り離してメモリが開放されたのか、ユーザーのプログラミングエリアが日本語G-BASICと比べて格段に広く使えます。説明書などに明記はされていませんが、自分自身の体感で10KB以上のプログラミングが可能なようです。

愛すべき弱点

G-GRAPHICと切り離され、アニメが使えなくなってはおりますが、それでもこれはこれで日本語G-BASICと比べて非常にありがたい拡張がなされております。しかし、ここ三ヶ月ほどBASIC1にてプログラミングをする必要が生じ、いろいろと試してみることができました。不都合な点もいくつか理解できた気がしましたので記してみます。あくまで自分の体感であることはご理解頂ければ幸いです。

FOR~NEXT文に、いわゆるバグがあるようです。正確な記述で、ネストや飛び出しなど無茶な処理をしなくとも、3回実行に1回くらいの割合で暴走します。説明書の最終ページにFOR~NEXTを使わない処理の方法が記されており、不具合に気がついていたのかもしれません。

READ文もしくはDATA文あるいはその両方の処理が非常に遅いです。データを先に配列変数にでも全部読み込んでしまっておけば特に問題はないのかもしれませんが、3つのデータを読むだけで一瞬プログラムが止まったようになったので驚いてしまいました。

ラインエディタの処理が非常に重く、日本語G-BASICでは扱いやすささえ感じたゴムキーボードとの相性が、悪くなっています。

いつか作ってみたい

ぴゅう太買えやソフトはただでさえ動く環境をお持ちの方が少ないため、なおさらに動く環境が少ないであろうBASIC1を使うことは当分はないでしょう。しかしセルの制御はとても強力で興味深いので、ゲームを作ってみたいなあとも思うのです。

「アストラルメイズ」について

さて「スプラぴゅうン」を作り終えたあと、もうひとつドットイートらしいドットイートゲームを作りたいなあと考えました。「スプラぴゅうン」は「スプラトゥーン」や「ペイントローラー」への敬意から作ったゲームだったので。第三弾は「パックマン」を参考に、しかし今回はオリジナル要素を強くしたいとも思いました。

電波新聞社から各マイコンに向けて移植されていた「パックマン」には、アーケード版の迷路を横に倒した画面のものがいくつかありました。ぴゅう太ではどんな感じになるかなあと「パックマン」の迷路を参考に作り始めてみると。迷路の一部を少し縮めると、縦のままに左右に2つ描けることが分かりました。

動く敵キャラクタを作りたかったけれど

BASIC1と違い、とにかくメモリに余裕のない日本語G-BASICでございます。ドットイートゲームでは敵キャラクタの動きが面白さを決める重要な要素のひとつでありますが、たとえば「パックマン」のように4匹のおばけの行動を管理するにはあまりにメモリに無理がありすぎます。また遊び手の主人公キャラクタを敵キャラクタに追いかけさせるアルゴリズムを作成するのに、あると便利な絶対値を求める関数などもございません。縦に2つ並んで描いた迷路を眺めていて。それらが無くてもゲームの体裁をとれる方法を考えました。

いけないと思う気持ちが、殊更に秘所を湿らせる

画面上に出場させられる敵キャラクタは、ゲームの処理速度からしても1匹が限度だろう。ならばいっそ敵キャラクタを動かなくしてしまい、乱数で通路に少しずつ置いていこう。遊び手はそれを避けながら主人公にエサを食べさせていく。ドットイートだから迷路の通路部分にドット、つまりエサを置いてそれを消していくように試しに作ってみたけど、なんというか、あまりにそのままだなあ。面白いかどうかは作って試さないとなんとも言えないけれど、どうせ敵キャラクタが動かなくて乱数で迷路に出場するんだ、エサも同じく乱数で出場するようにしてしまえ。ついでにエサも種類を作って面ごとにでてくるものを変えると「スーパーパックマン」みたいな華やかさがでるかも。あ、あとそれに加えてやっぱり迷路が2つあることを活かしたい。なんとかならないものか。疲れたからちょっとAVみよう。パート先の若い学生アルバイトと不倫してしまう人妻ものか。店のバックヤードでちょっとずつ身体が触れて、子どもや旦那のことが頭に浮かぶけれど、いけないことだと分かってはいるけれど、だからこそしっとり湿ってくる。精神でいけないことと分かっているからこそ肉体が余計に燃えてくるんだな。あ、これだ。2つの迷路をそれぞれ肉体と精神の迷宮としよう。2つの迷路は対の関係になっている。主人公のキャラクタは、主人公と迷路のみ描かれた精神の迷宮を動くこととする。そして肉体の迷宮には乱数で少しずつ、敵キャラクタとエサを置いていく。そして精神の迷宮で、肉体の迷宮に置かれたそれらキャラクタの位置と同じ位置に主人公キャラクタがくると、エサならば食べたことに、敵キャラクタならば死となる。

既視感とゲームの味付け

なんかこれ、既視感があるなあ。あ、BPSの「ザ・ファイアクリスタル」だ。あのゲームでは魔法使いが「アストラル」の魔法を使うと、魔法使いがアストラル体となって自由に迷宮を探検できるんだったな。よし物語も題名も一気に思いついた。題名は「アストラルメイズ」、敵キャラクタは悪神オタコちゃん、主人公はオタコちゃんに精神の迷宮に閉じ込められた星の世界のホシロンくん。精神の迷宮から脱出するために、エサの代わりに面ごとに変わる道具を集める。せっかくだから少しでも華やかに画面を飾る道具にしたいな。よし、夏大根、柿、うんこ、おめこマーク、メロン、注射器、赤カブ、クスコ、シンナー入りスタミナドリンク瓶、バナナ、ドス、チェリーにしよう。

ぎりぎり

プログラミングをしていて、本当にたまたまですがゲームが進行していくと少しずつ全体の速度が上がっていくような処理になりました。これのおかげもあり、正直なところゲームの体裁としても面白さもかなりぎりぎりの線だと自身で感じてはおりますが、何とか形を成したであろうところでメモリが一杯となりました。そして今回の作文もこれで一杯と相成りましたところで、次回もまたお目汚し頂ければ幸いにございます。お読み頂きありがとうございました。失礼致します。

 

当記事に関連する商品紹介