wiz風ダンジョン0,2


wizのようなダンジョンを歩くの描画処理部分を短くしました。(`・ω・')
…でも、処理速度はかなり重くなってしまった…('・ω・`)
操作は以前と同じです。
LI=2の数字を0〜3の範囲でいじると、数字の分だけ遠くが見えます。

'◆初期設定'
LI=2
WAIT=0
PH=2PX=0PY=0
setfont("T")j=120J=240@(CL,0,0x505050,0x727272,0x999999,0xB0B0B0,0xFFFFFF)@(PA,0,-1,0,1)@(PB,-1,0,1,0)@(PC,"西","北","東","南")@(BA,-9,-2,1,3,9)@(BB,-6,-2,0,1,3)@(BC,-3,-1,0,1,3)
map="1080606262668261688686200670662262316002082008220780603626803826806036220208262066262201088062620826262262306206806062000680662687262620600206262513482622000160062685157826800344162622626262052202320208"

'◆マップ情報処理'
label AAC
MAPS=substr(map,0,2)/1
for(a=0;a<MAPS;++a){for(b=0;b<MAPS;++b){I=substr(map,a*MAPS*2+b*2+2,1)H=substr(map,a*MAPS*2+b*2+3,1)MAP[b][a][0]=I%3;MAP[b][a][1]=I/3;MAP[b][a][3]=H%3;MAP[b][a][2]=H/3}}
soft1("MAPロード")soft2("終了")
label AAB
PA=PA[PH] PB=PB[PH] PC=PC[PH]
'◆描画処理'
lock()col(CL[0])frect(0,0,J,J)origin(j,j)a=LI;b=-2
label AAG
x=BB[b+2];X=abs(BC[b+2]);y=pow(2,a);Y=BC[b+2];p=72/y;P=-72/y;q=p*2;Q=P*2;R=P/2;s=-45/y;S=-63/y;t=90/y;T=108/y;u=126/y;U=q*2
z=MAP[PX-b*PA+(a*PB)][PY+(a*PA)+b*PB][PH]
if(z>0){col(CL[0])frect(P+b*q,P,q,q)col(CL[5-a])rect(P+b*q,P,q,q)
if(z==1){rect(R+b*q,R,p,T)}}
if(b==0){b=1;goto"AAG"}if(b<0){Z=PH-1;B=b+1;if(Z<0){Z=3}}
if(b>0){Z=PH+1;B=b-1;if(Z>3){Z=0}}
z=MAP[PX-B*PA+(a*PB)][PY+(a*PA)+B*PB][Z]
if(z>0){col(CL[0])frect(x*p,Q,X*p,U)
col(CL[5-a])line(Y*q,Q,Y*p,P)line(Y*q,q,Y*p,p)line(Y*q,Q,Y*q,q)line(Y*p,P,Y*p,p)
}
if(z==1){line(Y*u,S,Y*t,s)line(Y*u,S,Y*u,u)line(Y*t,s,Y*t,t)}
b=++b
if(b>2){a=--a;b=-2;if(a<0){goto"AAH"}}
goto"AAG"
label AAH
origin(0,0)col(0x00FFFF)text("X:".PX." Y:".PY." 方向:".PC,0,0,0)frect(J,0,J,J)unlock(1)

'◆移動処理'
label ACC
gc()input(WAIT)
if(scan&4096){if(MAP[PX][PY][PH]==0){col(CL[5])text("▲",114,0,0)PX=PX+PB PY=PY+PA}}
if(scan&65536){if(MAP[PX][PY][PH]<=1){col(CL[5])text("▲",114,0,0)PX=PX+PB PY=PY+PA}}
if(scan&32768){PH=PH+2if(PH>3){PH=PH-4}}
if(scan&8192){PH=PH-1if(PH<0){PH=3}}
if(scan&16384){PH=PH+1if(PH>3){PH=0}}
if(scan&262144){end}
if(scan&131072){map=load()goto"AAC"}
goto "AAB"