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敷いたりします。
実際にはこんな単純ではありませんが・・・
アナログ時計の時針について質問です
アナログ時計を作っているのですが秒針分針はできたのですが
時針は午後1時(13)になると止まってしまいます。
この13時を1時に変換できないでしょうか?
まだ改善点は色々ありますがお願いします
以下時針サンプル
GPAGE 0
CLS
@LOOP
GCLS
A = VAL(MID$(TIME$,0,2))
H = 30*A
H = RAD(H) ここで13を渡してしまってOUT OF RANGE
X = 100*COS(H)
Y = 100*SIN(H)
GLINE 100,100,X+50,Y+50,4
WAIT 1
GOTO @LOOP
>>158
別の板で言ってたキャラの当たり判定ですが、前述したとおりスプライト同士ならできます(SPHIT関数)が、BGにあたったかは自分でプログラムを組むしかないです。
IF X>BLOCKX AND X<=BLOCKX+15 AND Y>BLOCKY AND Y<=BLOCKY+15 THEN
みたいな感じで。