MSXポケットバンク⑤ ゲームキャラクタ操縦法

MSXポケットバンク⑤ ゲームキャラクタ操縦法」に掲載されているサンプルプログラム等を含むすべてのプログラムの打ち込みが完了したのでまとめました。

ポケットバンクシリーズはゲームなどのプログラムが中心に載っているものだけではなく、MSXの機能についての教本的な意味合いが強いものもあります。

本誌はスプライトの使い方などを解説しながら実際のプログラムで活用していますので、それらのプログラムの画面を掲載しながら紹介していきます(*'▽')

MSXマガジンに掲載されたバグ情報や不具合が出るプログラムについての修正方法なども掲載してあります。
画像は「MSXPLAYer2005」で実行したものを使用しています。


「リスト1-1」
スプライトで作られたMSXの文字が画面を動き回ります。

解説にもあるとおり比較的簡単にキャラクターを動かせるのはスプライトの便利な特徴のひとつ!(゚∀゚)

「リスト1-2」
コード名の上にカーソルを合わせてスペースキーを押すとコード名の和音が鳴ります。

カーソルにはもちろんスプライトを使用しています。ゲームのキャラクターに使われるだけでなく、このような「道具」としても手軽に使用できます(゚∀゚)

「リスト1-3 15パズルプログラム」
絵柄にスプライトを使用したおなじみな15パズル。

バラバラになった絵を元に戻していきますよ。

なんとなく完成に近づいてきた。

完成したのでスペースキーを押しましょう。

完成までの時間が表示されて終了(*'ω'*)

「リスト2-1」
小さいキャラが変化しながら動いていきます。

スプライトは8×8の場合は256パターン、16×16の場合は64パターン定義できるので、このようなアニメーションっぽい動きを作るのも比較的簡単(゚∀゚)

「リスト2-2」
実行するとエラーになります。
スプライトのプレーンは32枚まで表示でき、0~31の番号を指定して表示させますが、30行で32を指定して33枚目を表示させようとしているので当然エラーになりますw

それを修正して実行すると一瞬だけ■を表示して、

メッセージを表示して終了(・∀・)

「リスト2-3」
32枚のスプライトをフルに表示させています。もちろん横方向には4つまでしか表示できません(゚∀゚)

「リスト3-1」
実行するとエラーになりますが、エラーが出た60行ではなく10行のSCREEN文がエラーの原因。
スプライトはSCREEN 0では使えないので、関連する命令を使ってもエラーになるようです。

修正して実行しました(*'▽')

「リスト3-2」
SCREEN 2でのグラフィックの表示例です。

「リスト3-3」
2進数でのスプライトパターンの定義・表示例です。


2進数だと簡単でわかりやすいですが、データ量が多くなりますよね(*'ω'*)

「リスト3-4(a)」「リスト3-4(b)」
リスト3-4(a)

リスト3-4(b)

(a)と(b)は同じように飛行機が右から左下に移動するプログラムですが、(b)の方が速く動きます。

(a)は座標の移動に計算式を使っていますが、(b)は計算式を使わずSTEPを使って座標を移動させているので早いようです( ゚Д゚)

「リスト3-5」
スプライトのプレーンとパターンは独立しているため、異なった複数のプレーンに同じパターンを表示している、という例です。

「リスト3-6」
スプライトのパターンを登録するときにはデータを文字列の形で与えているので、リスト3-3のパターンの横8ドット分のデータを1文字のキャラクターに変換して8文字で構成されたデータにし、それを2進数に変換して表示しています。

100行がそのデータで、この方法でスプライトのパターンを定義するとデータが非常に小さくなります。

「リスト3-7」「リスト3-8」
この2つのプログラムは単独で実行するとエラーになるので、2つを合わせて実行しましょう。

リスト3-6の方法だとコントロールコードは文字列に変換できないので「^」を使って回避するプログラムです。

データ量は少ないですが、プログラムでの計算式等は複雑になっています(;'∀')

「リスト3-9」
16×16ドットのキャラクターの2進数でのスプライトパターンの定義・表示例です。


8×8ドットのスプライトパターンを①↓②↗③↓④の順で4つ並べて1枚のスプライトプレーンで表示している感じだと思います。

「リスト3-10」
16×16ドットのスプライトパターンデータをリスト3-7やリスト3-8と同じように文字列の形で与えていて、それを大量に表示させています

「リスト3-11 スロットマシンプログラム」
絵柄をスプライトで表示しています。

絵柄が1つもそろわず減点w

絵柄が2つ揃いました(*'▽')

今度は3つ!

しかしこのゲーム、絵柄が1つもそろわないことが少ないのでどんどん得点が増える一方ですw

普通にプレイするとまず終わらないゲームですが、いちおう得点が0になるとゲームオーバーになります(=゚ω゚)ノ

「リスト4-1」
ボールが画面上を動き、画面の端に当たるとバウンドして動いていきます。

「リスト4-2」
リスト4-1に加えて画面の中ほどに障害物が表示されていますが、これに当たってもバウンドして動いていきます。

「リスト4-3」
四角いボールが放物線を描いて飛んでいきます。

「リスト4-4」
描かれている正弦波の上をスプライトを使った棒がきれいに移動していきます。

「リスト4-5」
カーソルが円を描いて動きます。

写真ではわかりにくいですが、このような軌跡に沿って動いています。

「リスト4-6」
リスト4-5より複雑な軌跡でカーソルが動きます。

写真ではわかりにくいですが、いわゆるリサージュと言われる図形の軌跡に沿って動いています。

リスト4-5とリスト4-6の軌跡の点は本誌の解説に書かれている方法で表示させています。

リスト4-3~6のプログラムではスプライトを表示する座標を先に計算して変数に格納し、それを順番に参照してスプライトを表示しています。この方法だと座標を演算しながら表示させるよりはるかに早く動かせますよね(*'▽')

「リスト4-7」
円の周りを四角いカーソルが回りますが、円の裏に周ると隠れて見えなくなるのであたかも人工衛星が周っているかのように見えます(*'ω'*)

スプライトのy座標には特別な意味を持つ値があるので、それを用意した変数の範囲に代入し、その範囲だけはスプライトを表示させないようにしているとのことです。

見えなくする範囲を条件式で判定して表示させないようにするより早くて簡単ですよね(*'ω'*)

「リスト4-8」
インベーダーゲームのような砲台がカーソルキーで左右に動きます。

「リスト4-9」
単独で実行するとエラーが出ますが、リスト4-8に加えて実行することでスペースキーでミサイルを打つことができるようになります(*'▽')

「リスト4-10」
キャラが画面上を動きますが、5つのファンクションキーを押すとそれぞれのキーに設定された角度に動きが変わります。

「リスト4-11 アミダくじプログラム」
はじめは横線が書かれていませんが、

ファンクションキーでルートを選ぶと横線が書かれて、

線に沿ってカーソルが動いていきます。

結果は大キチ!

「リスト5-1」
スプライトを重ねて多色キャラを表示させています。

当然スプライトは横方向に4枚しか表示できないので、あまり多色にするのは実用的ではありません(*''ω''*)

「リスト5-2」
2種類のスプライトパターンを異なる動きで動かしています。

1つのキャラクターを複数のパターンを使って多色にするより、パターンの種類を増やして複数のキャラを動かした方が見栄えが良くなるのでMSX的には好都合、ということのようです。

「リスト5-3」
リスト4-7とプログラム構造は同じということですが、円の周りを回る四角いカーソルが2つになっています。2つのプレーンを同じ座標テーブルの位置をずらして表示させているとのことです。

さらに260行を本誌に記載されているように変えると、

同じ座標テーブルを使用しているのに違う軌道で回るため、表現のバリエーションが増えた感じになっています(*'ω'*)

「リスト5-4」
スプライトで表示された16匹のインベーダーが動いていきます。

実際のインベーダーゲームは横方向にもっとたくさんキャラが並んでいるので、横に4枚までという制限があるMSXのスプライトでは・・・

「リスト5-5」
尺取り虫のようなキャラが動きを変化させながら横に動いていきます。

定義しているパターンは8×8ドットで、表示しているキャラは横8ドットを越えている部分がありますが、越えている部分は別に用意したパターンを横に並べて横8ドット以上のキャラを表示させているとのことです(゚∀゚)

「リスト6-1」
スプライトパターンを作成できるスプライトパターンツールです。
まずは大きさを決めると、

作成画面が表示されるので、カーソルを動かしてスペースキーを押してドットを打っていきます。

そのほか小文字の「w・z・a・s」を押すとローテイトし、大文字の「W・Z・A・S」を押すとシフトします。
そしてどこかで見たことがあるキャラが完成(=゚ω゚)ノ

SELECTキーを押すと等倍で表示されます。1色でもそれなりに見えるかも(*''ω''*)

さらにSELECTキーを押すと2倍で表示され、さらにSELECTキーを押すと元の作成画面に戻ります。

完成したら作成画面でリターンキーを押すと行番号とともにスプライトのデータが表示されます。
ただしテキストでデータが表示されているだけなので、最上段の行から4回リターンキーを押してプログラムの1部にして利用しましょう(*''▽'')

「リスト7-1」

リスト5-2と同じに見えますが、スプライトが重なった時に ON SPRITE GOSUB が発動してそれぞれのパターンの色が入れ替わって反発して動いていきます。

「リスト7-2 ピンボールプログラム」
MSXマガジン1985年3月号に掲載の「MSX通信 ポケットバンク全正誤表」に印刷のかすれについての情報がありますので注意して入力しましょう。


リターンキーを押すとボールが発射されてスタート。


スペースキーを押してフリッパーを動かしてボールを打ち返します。ただしフリッパーは左右同時に動きます(゚∀゚)

フリッパーの間にボールが来てしまってミスに・・・

フリッパーはスペースキーを押し続けても元の位置に戻ってしまうのでボールを止めておくことはできませんよw

そうこうしているうちにボールが無くなってゲームオーバー(;'∀')


現在手元にある本誌はかなり後になって購入し直したものですが、当時は実際に購入して熟読し、スプライトについての命令等はだいたい理解して使えるようになっていたと思います。

しかしそれを活用してゲームなどを作るというところまでは至っていません。ゲームを作るのには構成力とかセンスとかが必要なので(;''∀'')

プログラムはA1STを使ってフロッピーディスクに掲載順に収めました。

インデックスも作ってすべて完了!


引き続き打ち込みを進めていきます。