wiz風(ryのヘボイマップ作成ツール


wiz風(ry専用の、マップ作成ツールです。ぱっと見意味わからんかも…
これで作ったマップをsaveして、wizのようなダンジョンを歩くでloadすると、作ったマップで歩けます。

◆使い方

ゝ動したらまずソフトキー1を押してmenuを開いて下さい。
ここで作るマップの大きさを変えたり、作ったマップをセーブ領域にsaveしたり、セーブ領域にあるデータをload出来ます。
好きなマップサイズにして、編集画面に戻って下さい。

∧埆顕萍未任料犧
↑↓←→・編集する座標の変更。(黄色い四角が動きます。)
2468・黄色い四角がある座標の上左右下方向の壁の編集。一回押す度に「→扉(赤い線)→壁(白い線)→壁無し(無地)→扉…」と切り替わっていきます。

作り方
まず外壁を作って下さい。作らないと、マップの外に出てどこまでも暗闇の中を歩いていけちゃいます。

次に、「壁(扉)を二重になるように」作って行ってください。例えば、ある座標の右側に壁(扉)を設置したら、
その座標の右の座標の左側にも、壁(扉)を設置してください。

□□ この2つの座標の間に壁を作る時は…

 ||  このように二重する。

…何でこうめんどくさい仕様にしたかというと、wizでよくある一方通行トラップを再現するためです。
片方だけに壁を設置すれば、一方通行が出来ますよ。

な埆犬圭わったら、menuを開いて、saveして終了してください。
セーブ領域を参照してワケわかんない数字が並んでれば恐らく成功です。
ダンジョンを歩く方のプログラムでロードしてみて下さい。

↓ここからソース↓

setfont("T")F=sthigh/2 G=sthigh soft2("終了")MAPS=5

label AB
lock()soft1("menu")col(0x505050)frect(0,0,240,240)
for(CY=0;CY<MAPS;++CY){for(CX=0;CX<MAPS;++CX){gosub "AC"}}
unlock(0)CX=0CY=0

label AD
col(0xFFFF30)frect(G*CX+3,G*CY+3,G-5,G-5)gc()
input()lock()gosub "AC"
unlock(0)
scan&4096&&CY=--CY CY<0&&CY=MAPS-1;scan&32768&&CY=++CY CY>MAPS-1&&CY=0;scan&8192&&CX=--CX CX<0&&CX=MAPS-1;scan&16384&&CX=++CX CX>MAPS-1&&CX=0;
a=MAP[3*CX+1][CY*3];b=MAP[3*CX][3*CY+1];c=MAP[CX*3+2][CY*3+1];d=MAP[3*CX+1][CY*3+2];
scan&4&&a=a+1 a>2&&a=0;scan&16&&b=b+1 b>2&&b=0;scan&64&&c=c+1 c>2&&c=0;scan&256&&d=d+1 d>2&&d=0;
MAP[3*CX+1][CY*3]=a;MAP[3*CX][3*CY+1]=b;MAP[CX*3+2][CY*3+1]=c;MAP[3*CX+1][CY*3+2]=d
if(scan&131072){goto"AE"}if(scan&262144){end}
lock()
gosub "AC"
unlock(0)
goto "AD"

label AC
d=G*CX+1;e=G*CY+1;f=G*(CX+1)-1;g=G*(CY+1)-1;
col(0)frect(G*CX+1,G*CY+1,G-1,G-1)
for(c=0;c<2;++c){color(255,255*c,255*c)
if(MAP[3*CX+1][CY*3]>c){line(d,e,f,e)}if(MAP[3*CX][3*CY+1]>c){line(d,e,d,g)}if(MAP[3*CX+1][CY*3+2]>c){line(d,g,f,g)}if(MAP[CX*3+2][CY*3+1]>c){line(f,e,f,g)}}
return;

label AE
lock()
col(0)frect(0,0,240,240)soft1("編集画面")col(0xFFFFFF)text("MAPサイズ変更(←→):",G,0,0)text(MAPS,G*10,0,0)text("データロード",G,G*1,0)text("データ記録",G,G*2,0)text("→",0,KY*G,0)
unlock(0)
input()
scan&4096&&KY=--KY;KY<0&&KY=2;scan&32768&&KY=++KY;KY>2&&KY=0;scan&8192&&KY==0&&MAPS>1&&MAPS=--MAPS;scan&16384&&KY==0&&MAPS<20&&MAPS=++MAPS;
if(scan&262144){end}if(scan&131072){goto"AB"}if(scan&65536){if(KY==0){goto"AB"}if(KY==1){text("(・ω・)ロード中・・",G*8,G*1,0)map=load()goto"AG"}if(KY==2){goto"AF"}}
goto"AE"

label AF
SAV=MAPS
SAV<10&&SAV="0".MAPS;
for(a=0;a<MAPS;++a){
for(b=0;b<MAPS;++b){
SAV=SAV.(MAP[3*b][a*3+1]+MAP[3*b+1][a*3]*3)
SAV=SAV.(MAP[b*3+1][a*3+2]+MAP[b*3+2][a*3+1]*3)}}
save(SAV)
text("(`・ω・')ъOk",G*8,G*2,0)input(1500)
goto"AE"
label AG
if(map==0){MAPS=5 goto"AB"}
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
}}
goto"AB"