bgmsetd 128,@mml
BGMPLAY 128
WAIT 300
@mml
data ":0 v100q91o5l8c e q93l4d b g q91l8a g q93l4g f f q91<l8a "
DATA "b q93>l4c a f q91l8g f q93l4e d d q91<l8b >c "
DATA "q93l4d q91l8g a q93l4b q91l8a f q93l4e q91l8a b"
DATA "q93l4b q91l8b a q93l4d >c <b a q63l2.g q94l4.g q91l8g"
DATA "q93l4b g q94l4.a q91l8a q70l2a l4.a q91l8a "
DATA "q93>l4c <a q94l4.b q91l8b q70l2b l4.b q91l8b q93>l4d "
DATA "<b q94>l4.c q91l8c q94l4.c q91<l8b a q54l2^4.d"
と入力したのですが、illegal mml と表示されてしまいます。
古典的な方法としては、
X座標・Y座標・状態・移動ベクトルなど、の4つを登場キャラ数分配列宣言しておいて
for〜next内で処理するのが簡単かと。
例)
for i=0 to 9 ”10キャラ分
if st(i)==1 then gosub @tekimove ”st()=状態用。0=停止・1=移動中
next
:
@tekimove ”v()=移動ベクトル用。移動パターン数分用意。
on v(i) gosub @移動パターン1,@移動パターン2,@移動パターン3・・
return
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