美食と猫と自作ゲーム

今のところ、自作ゲーム記事ばっかり。

自作ゲーム53 BASICを使ったプログラムは簡単1

自作ゲームはエンディング途中まで作成中で、使える画像もあまりないので、タイトル詐欺になっているゲームプログラムの中身について触れていこうと思ふ。高度なプログラム技術のある方から見れば拙い内容だが、その拙いレベルでもこの程度のゲームはできるという事を伝えるのが目的。

ゲームはBLUE MSXというMSXパソコンのエミュレータを使用して作成している。

 

ここから無料でダウンロードできる。

https://bluemsx.msxblue.com/jdownload.html

※ダウンロード後にMSX2turboRで起動するよう設定変更。

 

プログラムは100%BASICという言語で作成している。下のように、行番号の後に言語をならべる。

例:

10  DEFINTA-Z:DIMM$(280):I=0

10行の次は20行といった感じでプログラムを追加していく。プログラムが組上がったら、RUNという命令を実行する事で、行番号の若い順に命令が処理されていく。

最初の行は初期化処理を行っている。

上の例だと、DEFINTというのは整数扱い宣言をする命令。その後にあるAからZではじまる変数を整数のみ扱うという事。これをしないと小数点以下の計算までしようとするため、処理が遅い。その後にある : はセミコロンといい、次の命令との区切り。区切る事で1行あたり確か255文字位の命令が入力できる。

変数とは?

名の通り、変化する数字や文字列。数字の変数は、いわゆる体力や移動スピードなどのパラメーター管理に使う。たとえば主人公の体力は変数Hを使っている。$がつくのが文字列変数。上の例でいうとM$で、ここにマップデータや音楽データを格納する。DIMM$(280)という命令は、M$()という文字列変数を0~最大280まで利用するという事。()数字付の変数は沢山のデータを同じ目的で使うのに便利で、たとえばマップデータは一画面あたり16×13個のマップパーツで構成されており、一行16文字のデータを13個縦に並べて表示する。一つのプログラムに16枚程度のマップを入れているので、数字なし変数にしようとすると208(13×16)個もの文字列変数を用意し、かつ208個分の表示命令が必要になる。記憶容量は限られているので、とんでもない無駄使いである。数字付変数の場合、1~13に初めのマップ、14~26に次のマップといった感じでデータを格納する。今マップ何番にいるかをしめす変数にMを使っているので、表示命令は以下一行ですむ。

例:

240 FORI=1TO13:LOCATE1,I:PRINTM$((M-1)×13+I):NEXT

 

FORI=1TO13とNEXTは対になっていて、Iの数字が1からスタートして加算され、13に達するまで、はさんだ命令を繰り返す。先ほど10行のプログラムにI=0とあったが、変数IやJはこの繰り返し命令でよく使うので、プログラムの先頭付近で、ダミー数字をいれて使うという事を宣言しておくと、処理が少し速くなるらしい。

LOCATEは表示する位置をX軸,Y軸で指定する。下の画像を見るとイメージがつかみやすいかもしれない。

※主人公(白)はX(横)軸8,Y(縦)軸13の位置にいる。

 

PRINTは後に続く文字列や数字や変数を表示する命令。応用すると下のようにスクロール表示なんかもできる。

 

 

まだ1行分しか解説していないのに、解説するってなかなか大変だ。しかもよんでても分かりにくい上に面白くない。

次回からは命令の説明は簡略化し、どういった処理で動かしているかをメモも兼ねて以下のように処理別に公開していく事にする。

・主人公の生命力を示すLIFEバーの表示方法

・先ほどのスクロール処理はどうやっているか

・BGM(音楽)はどうやって鳴らしているか

・敵の動く処理、動き方のパターン

・飛び道具の処理

・飛び道具にあたった時の処理

など

 

各命令については説明サイトの方がわかりやすいと思ふ。

http://ngs.no.coocan.jp/doc/wiki.cgi/TechHan?page=1%2E1+MSX+BASIC+ver2%2E0%A4%CE%CC%BF%CE%E1