wiz風のゲーム作りたくてまずダンジョンを歩くのを作ってみました。
素人が作ったので無駄な部分が大分あるとおも…(特に描画部分)
(ソース短くなったけど処理重くなっちまったver→wiz風ダンジョン0,2)
操作方法
↑・前進
←→・向きを変える
↓・後ろを向く
センター・扉を開ける&前進
ソフトキー1の[MAPロード]ってのは、wiz風(ryのヘボイマップ作成ツールで作ったデータをload()して別のマップを歩けるようにする事が出来ます。(データが無いとエラーになる)
↓ここからソース↓
'◆初期設定' WAIT=10 PH=2 PX=0 PY=0 setfont("T") G=sthigh/2 @(CL,0,0x505050,0x909090,0xC0C0C0,0xFFFFFF)@(PA,0,-1,0,1)@(PB,-1,0,1,0)@(PC,"西","北","東","南")HX=PX*3+1HY=PY*3+1 soft1("MAPロード")soft2("終了") '◆マップデータの処理' 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[3*b][a*3+1]=I%3 MAP[3*b+1][a*3]=I/3 MAP[b*3+1][a*3+2]=H%3 MAP[b*3+2][a*3+1]=H/3 }} '◆描画処理' label AAB PA=PA[PH] PB=PB[PH] PC=PC[PH] lock() col(CL[0])frect(0,0,G*40,G*40)col(CL[4]) for(a=-3;a<=2;a=a+1){ z=MAP[HX-a*3*PA+7*PB][HY+a*3*PB+7*PA] if(z>0){col(CL[1])rect(G*(15+10*a),G*15,G*10,G*10)if(z<2){rect(G*(10*a+18),G*18,G*4,G*7)}}} for(a=0;a<=3;a=a+1){ b=a-2 c=16*a-4 d=10*a+5 g=16*a-4 h=14*a-1 i=12*a+2 if(b>-1){b=b+1 g=15+10*b} e=abs(b)*b z=MAP[HX-e*PA+6*PB][HY+e*PB+6*PA] if(z>0){col(CL[0])frect(G*g,G*12,G*pow(3,abs(b)),G*14)col(CL[2])line(G*c,G*12,G*d,G*15)line(G*c,G*12,G*c,G*28)line(G*d,G*15,G*d,G*25)line(G*d,G*25,G*c,G*28) if(z<2){line(G*h,G*33/2,G*i,G*35/2)line(G*h,G*33/2,G*h,G*27)line(G*i,G*35/2,G*i,G*26)}}} for(a=-1;a<=1;a=a+1){ z=MAP[HX-a*PA*3+4*PB][HY+a*PB*3+4*PA] if(z>0){col(CL[0])frect(G*(12+16*a),G*12,G*16,G*16)col(CL[3])rect(G*(12+16*a),G*12,G*16,G*16)if(z<2){rect(G*(16*a+16),G*16,G*8,G*12)}}} for(a=0;a<=1;a=a+1){ b=6+28*a c=12+16*a d=2*a-1 e=24*a+8 f=18*a+11 z=MAP[HX+3*PB-d*PA][HY+3*PA+d*PB] if(z>0){col(CL[0])frect(G*(6+22*a),G*6,G*6,G*28)col(CL[3])line(G*b,G*6,G*c,G*12)line(G*b,G*6,G*b,G*34)line(G*c,G*12,G*c,G*28)line(G*b,G*34,G*c,G*28)if(z<2){line(G*e,G*13,G*f,G*31/2)line(G*e,G*13,G*e,G*32)line(G*f,G*31/2,G*f,G*29)}}} for(a=-1;a<=1;a=a+1){ if(MAP[HX-a*PA*3+PB][HY+a*PB*3+PA]>0){col(CL[0])frect(G*(6+28*a),G*6,G*28,G*28)col(CL[4])rect(G*(6+28*a),G*6,G*28,G*28)}} if(MAP[HX+PB][HY+PA]>0&MAP[HX+PB][HY+PA]<2){rect(G*12,G*12,G*16,G*22)} for(a=0;a<=1;a=a+1){ b=6+28*a c=2*a-1 d=a*36+2 z=MAP[HX-c*PA][HY+c*PB] if(z>0){col(CL[0])frect(G*34*a,0,G*6,G*35)col(CL[4])line(G*(40*a),0,G*b,G*6)line(G*b,G*6,G*b,G*34)line(G*(40*a),G*40,G*b,G*34)if(z<2){line(G*a*40,G*7,G*d,G*9)line(G*d,G*9,G*d,G*38)}}} col(0x00FFFF)text("X_Y_方向",0,0,5)col(CL[4])text(HX/3,G*2,0,5)text(HY/3,G*6,0,5)text(PC,G*12,0,5)frect(G*40,0,G*40,G*40) unlock(1) 'キー読み取って移動処理etc' input(WAIT) if(scan&4096){if(MAP[HX+PB][HY+PA]==0){col(CL[4])text("▲",G*19,0,5)HX=HX+3*PB HY=HY+3*PA}}if(scan&65536){if(MAP[HX+PB][HY+PA]<=1){col(CL[4])text("▲",G*19,0,5)HX=HX+3*PB HY=HY+3*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"