ACLS:CLEAR:SC=130
SPSET 0,130,0,0,0,1
SPANIM 0,2,8:JF=1
@LOOP
VSYNC 1
B=BUTTON()
IF !!(B AND 16)AND !JF THEN MV=-7:JF=1:BEEP 8
MV=(MV+0.3)*JF
PY=PY+MV
IF B AND 4 THEN PX=PX-4:SC=132
IF B AND 8 THEN PX=PX+4:SC=128
IF PX<-16 THEN PX=256
IF PX>256 THEN PX=-16
IF PY>176 THEN PY=176:JF=0:BEEP 9
SPCHR 0.SC
SPOFS 0,PX,PY
GOTO@LOOP
CLEAR
DIM BGDATA(64*64,4)
LOAD"SCU0U:***"
BGPAGE 0
FOR I=0 TO 64*64-1
BGREAD(0,I%32,I/32),CHR,PAL,H,V
BGDATA(I,0)=CHR
BGDATA(I,1)=PAL
BGDATA(I,2)=H
BGDATA(I,3)=V
NEXT
これでチップデータを受け取ってあとはKEY$とかに書きだしてプログラムに書き込めばおk
例えば、草原=0、土=1、岩=2、壁=3と決め、
壁壁壁壁壁壁壁壁
壁土土土土土土壁
壁土岩岩土岩土壁
壁土土草草土土壁
壁土草草草草土壁
壁草草草草草草壁
壁壁壁壁壁壁壁壁
このようなマップを作るとします。すると、データ文では、先ほど決めたルールにそって入力していきます。
DATA 33333333
DATA 31111113
DATA 31221213
DATA 31100113
DATA 31000013
DATA 30000003
DATA 33333333
こうなります。
次に、READ命令でDATA文の内容を受け取ります。
DIM MAPDATA$(7)
FOR I=0 TO 6
READ MAPDATA$(I)
NEXT
これで変数にマップデータが入りました。
次にX座標、Y座標の指定した所のデータを読み取ってみます。
X座標は文字列の位置(30110103)のX番目の文字=MID$関数で取り出し。
Y座標はお分かりの通り変数MAPDATA$(Y←これです。)
つまり、
D$=MID$(MAPDATA$(Y),X,1)
これでD$に指定座標の情報が入ります。
あとはこれでBG敷いたりします。
実際にはこんな単純ではありませんが・・・