第3回は「マップデータをつくろう」です。
(背景をつくろうを最初から見る場合はこちら)
実際にマップを作り始める前にマップを作っていくのに必要な「FOR~NEXT」を紹介します。
FOR~NEXT の解説
「FOR~NEXT」は決まった回数を繰り返し、その回数を変数として使うのに便利な命令です。
まずは画像のように打ち込んでください。

実行結果

FORの後ろにある変数が、TOの後の数値まで繰り返されるものになり、TOの後の数値を超えるとループを終了となります。
(NEXTの次の行に進む)
繰り返しの回数分だけ、FORとNEXTの間にある処理が実行されます。
今回の場合IXが0から始まり4になるまで繰り返され、4を超えたため終了となりました。
それでは次に画像のように調整してください

実行結果

FORの中にFORを入れた形になります。
動作としては少し複雑ですが、1つの動作ずつ追ってみると、
外側のFORでIYに0が入る
内側のFORでIXに0が入る
IX、IYを表示 → 0,0
内側のNEXTで内側のFORに戻る
内側のFORでIXに1が入る
IX、IYを表示 → 1,0
内側のNEXTで内側のFORに戻る
(IXが4まで内側のFORが繰り返される)
IX、IYを表示 → 4,0
IXが4を超えるため内側のNEXTの次の行へ進む
外側のNEXTから外側のFORに戻る
外側のFORでIYに1が入る
内側のFORでIXに0が入る
IX、IYを表示 → 0,1
内側のNEXTで内側のFORに戻る
内側のFORでIXに1が入る
IX、IYを表示 → 1,1
内側のNEXTで内側のFORに戻る
・
・
・
と繰り返され(4,2)になった時に外側のFOR~NEXTも終了します。
ものすごくザックリですが
「内側のFORの回数分繰り返す動作」を「外側のFORの回数分繰り返す」
というようなイメージだと思ってください。
試しに繰り返す回数を色々と変えてみるとわかりやすいかもしれません。
この動作をマップチップを置くのに利用します。
DATA文のマップを表示する
それでは実際にDATA文を使ってマップを作って行きたいと思います。
まずは仕組みを知るために、4種類のマップチップをひとつずつ条件で表示してみましょう。
第2回から以下のように調整してください。
9、10行目 RESTORE、READを追加
12~23行目 FOR~NEXTの作成(IF文の内容は第2回と同じ)
29、30行目 DATA文を追加

実行結果

MID$ の解説
MID$は対象の文字列から指定した場所の文字を取得するものになります。
今回は
10行目 「MAP_ROWS$」に「”0123″」を代入
12行目 「FOR」で最初は「IX=0」が代入
14行目 「 MID$(MAP_ROWS$,IX,1) 」 は「 MID$(“0123”,0,1) 」という形になり、”0123″の0番目の文字を1つ取得します。(”0″を取得)
すなわち「CHIP_NO$」に文字列 “0” が代入されています。
全体の流れとしては
10行目 変数に1行分の文字列 “0123” が代入される
12行目 FOR開始(IX=0)
14行目 CHIO_NO$に0番目の “0” が代入される
16行目の条件を満たすので「CHIP_GRA」に「&HE8C1」が代入される
21行目 TPUTで(TX,0)すなわち(0,0)に「&HE8C1」のマップチップが置かれる
12行目に戻り、再度FOR開始(IX=1)
と続いていき、FORが4回ループして(4つのマップチップが置かれて)終了しました。
今回は繰り返しのIX、取得開始位置、取得される文字列が同じ「0~3」だったため、少しわかりづらかったかもしれません。
次回は実際に1画面分のマップを作って、表示させていきたいと思います。
第3回は以上になります。
「背景をつくろう」のトップに戻る場合はこちら

コメント