ver2.61_MAP_DUNGEON

http://www.SMITH-PROJECT.jp/
>ただし、そのままの内容で転載の際は事前連絡をください
って書いてたので連絡をしたら迅速な返事をいただき
転載を許可していただきました。感謝!

#define MAP_WIDTH 20	;マップの横幅
#define MAP_HEIGHT 20	;マップの縦幅
#define SIZE 32		;1マスのサイズ
#define MAIN_PLANE 0
#define COL_MODE 0	//変更	1だと色つかないw

	;/////	初期設定いろいろ	/////
	scrX=MAP_WIDTH*SIZE:scrY=MAP_HEIGHT*SIZE
	if (ginfo_dispx<scrX)||(ginfo_dispy<scrY):dialog "MAPが大きすぎるかSIZEが大きすぎます":end	//変更	ginfo_dispx	ginfo_dispy
	screen MAIN_PLANE,scrX,scrY,COL_MODE,(ginfo_dispx-scrX)/2,(ginfo_dispy-scrY)/2:cls 4		//変更	ginfo_dispx	ginfo_dispy
	dim map,MAP_WIDTH,MAP_HEIGHT:sdim map_chip,10,10
	map_chip.0="","■","★","●":font "MS ゴシック",SIZE
	randomize:map_w=MAP_WIDTH-1:map_h=MAP_HEIGHT-1:	mx=map_w-1:my=map_h-1

	;/////	MAPの端をすべて壁に	/////
	repeat MAP_WIDTH:map.cnt.0=1:map.cnt.map_h=1:loop
	repeat MAP_HEIGHT:map.0.cnt=1:map.map_w.cnt=1:loop

	;/////	それっぽく迷路を作る	/////	アルゴリズム全然理解できてないw y.tack
	repeat MAP_WIDTH/2-1
		x=cnt*2+1
		repeat MAP_HEIGHT/2-1
			y=cnt*2+1:r=rnd(3):r++:map.x.y=r:r=rnd(3):r++	//	変更	rndを命令から関数へ
			if r==1{tmpx=x:tmpy=y-1:pchk=map.tmpx.tmpy
				if pchk:continue:else:map.tmpx.tmpy=r
			}
			if r==2{tmpx=x+1:tmpy=y:pchk=map.tmpx.tmpy
				if pchk:continue:else:map.tmpx.tmpy=r
			}
			if r==3{tmpx=x:tmpy=y+1:pchk=map.tmpx.tmpy
				if pchk:continue:else:map.tmpx.tmpy=r
			}
		loop
	loop
	
	;/////	迷路描画	/////
	gsel MAIN_PLANE:color 32,32,128
	repeat MAP_WIDTH
		x=cnt
		repeat MAP_HEIGHT
			y=cnt:r=map.x.y:pos x*SIZE,y*SIZE:mes map_chip.r
		loop
	loop
	color 255,255,255:pos mx*SIZE,my*SIZE:mes "◆"		;smith氏コメント

*MAIN	
	await 50:stick ky,15:if ky==0:goto *MAIN		;Key入力
	xv=((ky>>2)&1)-(ky&1):yv=((ky>>3)&1)-((ky>>1)&1)	;smith氏コメント				//変更	計算順序が違うので括弧で括りました
	tmpx=mx+xv:tmpy=my+yv:pchk=map.tmpx.tmpy		;smith氏コメント
	;smith氏コメント
	if pchk==0{
		o_mx=mx:o_my=my:mx+=xv:my+=yv:redraw 2
		color 255,255,255:pos mx*SIZE,my*SIZE:mes "◆"
		tmpx=o_mx*SIZE:tmpy=o_my*SIZE
		color 0  ,  0,  0:boxf tmpx,tmpy,tmpx+SIZE,tmpy+SIZE:redraw 1
	}
goto *MAIN
;//////////	プログラム解説	//////////
;smith氏コメント
;/////////////////////////////////////////
;Programed by smith 2001.03 (smith@big.or.jp)
;このプログラムソースは自由にご使用頂いて構いません。
;ただし、そのままの内容で転載の際は事前連絡をください。
;----------	迷路生成アルゴリズム参考	----------
;「鷹月ぐみな氏CreationCollege」
;http://cgi.campus.ne.jp/~ishigami/CREATION/index.html	//	LINK切れっぽいです

;smith氏コメントはあんまり残ってるとよくない気がしましたので
;半分くらい割愛しました。気になる人はsmith氏サイトを要check!