プレイ日記
ケイン KEIN.HORGAN
シンプルRPG製作日記 18日目 マップデータを文字列配列に保存して使う 「文字列変数の中身は、1文字ずつ取り出せる」
4そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
さて、マップの拡大、つまり枠の範囲外にあるマップを作成する方法についてです。 色々と悩んだのですが、結局主人公固定方式でいこうと思います。 (このあたりは、スプライトとBG使った方が簡単に出来るような気がひしひしと。 とは言っても、最初の宣言をこれ以上破るとなんだか負けた気になるので、このままコンソールで行きます) まずは画像1枚目。19行目にグローバル変数を追加しました。 これは、主人公の「マップ上の」現在座標を示すのに使います。
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
28行目からは、マップデータを配列に保存しています。 まずはマップサイズをグローバル変数に保存。 次に、マップ保存用の配列宣言。 そして、実際のデータ保存。 マップデータなので、枠はありません。 ではその枠はどうしたかと言うと、自作命令化して別途呼び出す事にしました。 それが49行目のMAP_LINEです。 そして、実際のマップ表示も自作命令化しようと思います。 それが50行目で、MAP_WALK命令としました。
0そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
こちらの172行目からがマップ枠の作成。 メッセージ枠と同様の流れです。 183行目からがマップ表示、つまり主人公が歩く度にマップを描き直す命令ですが…… 見てわかる通り、これはまだ作りかけです。
0そうだね
プレイ済み
返信[4]
親投稿
ケイン KEIN.HORGAN
とりあえず、「主人公のいる座標の地形を枠の中央に表示する」という方向で考えます。 枠の中央、というのは、画面上の座標で言えば、7,7 の位置になるので、LOCATE 命令で7,7 を指定します。 主人公のいる座標の地形については、マップデータが配列になっているので、ここからどうにかして取得しないといけません。 それが、185行目です。 MAP$[G_PY][G_PX] こういう書き方をすると、「MAP$ 配列の、G_PY 番目の文字列の、G_PX 文字目」を取得する事が出来ます(※)
0そうだね
プレイ済み
返信[5]
親投稿
ケイン KEIN.HORGAN
さて、これで枠中央に地形を表示出来ました。 同様に「中央に配置した地形の右隣の地形、またその右隣の地形……」としていったのが、186~191行目です。 これは一見FOR 文の出番のように見えますが、実のところFOR 文を使うよりもっといい方法があります。 そのためには、また新しい命令が必要になるので、次回はその命令の解説をしようと思います。 ※文字列の配列、でなく、ただの文字列であった場合も同様の機能があります。 例えば A$="ABCDE" としたならば…… A$[0]で"A"が、A$[1]で"B"が、というふうに取得する事が出来ます。 この場合は、単純に「A$ という文字列の ○文字目」という事になります。
0そうだね
プレイ済み