実際にプチコンでは文字列を配列として扱えない仕様になっていますが、
現在使われているプログラミング言語では配列は文字データの配列として扱えます。
今後プログラムをする際に利用することが多いと思うのでここで簡単な説明をします。
その前に今回はキャラクタ(文字)で表現したゲームのサンプルになっています。
キャラクタを表示する画面は言い換えると文字の配列と考えることができます。
前回の配列は1次元の配列でしたが。。。
画面は2次元配列です。
1次元配列が箱を仕切りで横一列に区切ったものならば、
2次元配列は箱を仕切りで縦横の格子状に区切ったものといえます。
1次元の配列要素を指定するには先頭から何番目かをインデックスとして使用します。
2次元の場合には縦何行目、横何桁目で指定する事ができます。
画面に文字列を表示する際に LOCATE 命令で横(x軸)と縦(y軸)を指定しましたね。
ですから画面は2次元配列であることがわかります。
今回、画面に表示するマップデータを作成する際に最も簡単な方法は。。。
マップに表示される文字列を1次元配列に格納する手法をとります。
この方法の利点はプチコンの READ 命令と DATA 命令を利用することで
画面イメージがわかりやすく、そのまま表示できるからです。
また文字列を文字列の1次元配列に保存しておくことにより、
この配列からマップデータを取り出し判定に使えます。
前回1次元配列をブログで表現しやすいように表記のルールを決めました。
配列変数名{要素番号[データ]、…}
書き方を変形すると。。。
配列変数名{
要素番号[データ]、
…
}
ちなみに・・・は省略という意味です。
同じパターンのデータが繰り返されます。
文字列データは本来であれば。。。
文字列変数名{”文字列”}
と書くことにしましたが、これは文字の配列として考えることができるので、
文字列変数名{要素番号[’文字’]、…}
と置き換えできます。
では、文字列配列はどう表現できるでしょうか?
文字列配列変数名{
要素番号[”文字列”]、
・・・
}
文字列は文字の配列なので
文字列配列変数名{
要素番号[要素番号[’文字’]、…]、
・・・
}
慣れるまではわかりにくいかもしれません。
ここで、縦3行、横3桁のマップがあったとしますと上の記述は。。。
MAP${
0[0[’文字’]、1[’文字’]、2[’文字’]]、
1[0[’文字’]、1[’文字’]、2[’文字’]]、
2[0[’文字’]、1[’文字’]、2[’文字’]]
}
では問題です。
DATA 命令が次のようになっていた場合、これを READ 命令で MAP$ 配列に読み込みました。
上の表記を使って読み込んだデータを記述してください。
サンプルデータ
DATA "ABC"
DATA "MNO"
DATA "XYZ"
回答は次回行います。