トピック
Warabi.exe seisiro2

DATA命令でマップを表示するにはどうすれば良いですか?

以前にこの様な質問をしている方がいたかも知れませんが、 「DATA命令」でマップ表示するにはどうすれば良いですか? 出来れば教えてください。
0そうだね
プレイ済み
返信[1]
親投稿
ΖΕΧ ZEX256
DATA文はプログラム中に沢山データを記述する場合に使用します。 DATA 97,100,97,97,100,101,0 DATA文自体は何も処理をしません、DATA文の基本的な使い方は、変数に読み出して使います。 DATA文に記載されたデータを読みだすのがREAD命令です。 READ NO ? NO これで先頭のデータが変数 NO に読み出され、それを表示しています。
1そうだね
プレイ済み
返信[2]
親投稿
ΖΕΧ ZEX256
READ命令を連続で行えば、DATA文の続きを読み出せます。 READ NO:? NO READ NO:? NO READ NO:? NO READ NO:? NO 毎回こんな記述をしたのではDATA文にした意味が無いので、ループ処理の中で読み出します。 FOR I=0 TO 6 READ NO ? NO NEXT この場合FOR文で7回ループして読み込んでいます。 もし、8回読み込んでしまうとデータが無いのでエラーになります。
0そうだね
プレイ済み
返信[3]
親投稿
ΖΕΧ ZEX256
DATAの最後まで読み込み、その後、更に読み出そうとすると、データが無いためエラーになるのです。 データの数が予め決まっているのなら、これでも良いでしょう。 ですが、DATA文に書くデータは大抵、不特定多数です、有れば有っただけ読み出して使いたい。 そこでDATA文に記述するデータの最後に、「ここでデータの終わりだよ」とする印しとして、 たとえば-1を書いておきます。 DATA 97,100,97,97,100,101,0,-1 無限ループで読み出しして、読みだしたデータが-1なら、ループを抜ければ良いのです。 WHILE 1 READ NO IF NO < 0 THEN BREAK '変数 NOがマイナス値ならループを抜ける ? NO WEND
0そうだね
プレイ済み
返信[4]
親投稿
ΖΕΧ ZEX256
この例では、読み出したデータをそのまま文字で表示しました。 BG画面に地面を表示したいならばBGPUT命令を使います。 L=0:X=12:Y=8:NO=100 BGPUT L,X,Y,NO '←画面中央に林のBGキャラを表示 データを読み込んでBGに表示 DATA 97,100,97,97,100,101,0,-1 L=0:X=0:Y=0 WHILE 1 READ NO IF NO < 0 THEN BREAK BGPUT L,X,Y,NO '←読み出したNOのBGキャラを表示 X=X+1 '次のBGの表示位置を1つ右にずらしている WEND
0そうだね
プレイ済み
返信[5]
親投稿
ΖΕΧ ZEX256
この例では、BGを横一行しか表示していません。 縦方向にもBGを敷き詰めたいなら、DATA文に「ここで1行の終わりだよ」とする印しとして、例えば 0 を書いておきます。 DATA 97,100, 97, 97, 99, 99,0 DATA 100,100,100, 97, 97, 97,0 DATA 101,101,101,100,100, 97,-1 読み込んだデータが 0の場合、1行下に移動し、更に左端に移動して、続きのBGキャラを表示すれば良いのです。 L=0:X=0:Y=0 WHILE 1 READ NO IF NO < 0 THEN BREAK IF NO ==0 THEN Y=Y+1:X=0 '←Y軸を一つ下に移動し、X軸を左端に移動している BGPUT L,X,Y,NO X=X+1 WEND
1そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
これでフィールドマップを表示できるようになりました。 DATAの読み出し位置をRESTORE命令で、変更できますが割愛します。 RESTOREと入力し画面右上の[?]を押すと説明が表示されます。
0そうだね
プレイ済み
返信[7]
親投稿
ΖΕΧ ZEX256
他にサンプル DATA_MAP 公開キー【DADAXZ3】
1そうだね
プレイ済み