では、前回の解答です。
MAP${
0[0[’A’]、1[’B’]、2[’C’]]、
1[0[’M’]、1[’N’]、2[’O’]]、
2[0[’X’]、1[’Y’]、2[’Z’]]、
}
もうお分かりだと思いますが説明すると。。。
各行の最初の番号は行番号で、座標でいうとY座標となります。
並んだ文字に縦に同じ番号が書かれていますが、これが列番号で、X座標になります。
もしこれがマップのデータであれば、今知りたいマップの位置(要するにX,Y座標)を
調べる事が出来ればいいわけですね。
Y座標は簡単に指定できますね。
もともと配列なんで
MAP$(Y)
となります。
X座標の位置にある文字を取り出せば良いわけです。
【文字列を扱う代表的な関数】
文字列を扱う関数は一般的に次のようなものがあります。
1)LEFT$(S$、N) ただし、S$は文字列、Nは文字数
指定した文字列の左からN文字取り出す。
2)RIGHT$(S$,N)
指定した文字列の右からN文字取り出す。
3)MID$(S$,I,N) ただしIは文字の位置
指定した文字列のI番目からN文字取り出す。
残念なことにプチコンではMID$のみ実装されています。
言い換えるとMID$でLEFT$やRIGHT$と同じことができます。
今回はMID$を使用すれば文字列の指定位置から文字を取り出すことができます。
要するに指定された文字列のI番目から1文字取り出せればいいわけです。
調べたい位置の文字=MID$(マップの文字列データ、X座標、1)
となります。
結論として。。。
もし、知りたいマップ位置を(X、Y)とすると、
求めるマップのデータは。。。
C$=MID$(MAP$(Y)、X、1)
とすればいいのです。
最後に。。。もしこれをプチコンでプログラムする際に
サブルーチンとしてプログラムするとしたらどうなるでしょうか?
サブルーチンとそれを呼び出すプログラムを記述してください。
解答例を見ず考えてみてください。(解答は↓にあります)
解答例)
サブルーチン(GET MAP DaTa)
@GETMAPDT
C$=MID$(MAP$(Y),X,1)
RETURN
呼び出し側
X=横位置(桁)の値
Y=縦位置(行)の値
GOSUB @GETMAPDT