亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? maze.pas

?? 迷宮生成和探索程序。DOS,PASCAL
?? PAS
字號:
uses Graph,crt;
const
	s=9734;
   MaxFind=10;
   MaxGrow=200;
Const
{maze size}
   MaxStack=8000;
	Nxm=300;
   Nym=210;
	Nx:Integer=100;
   Ny:Integer=80;
type
	stacktype=Record
   	X,Y:Integer;
   end;
	StackArr=array[1..maxstack] of Stacktype;
const
	Idx:array[0..3] of Integer=(1,0,-1,0);
	Idy:array[0..3] of Integer=(0,-1,0,1);
var
   Nxy:LongInt;
   A: array[0..nxm,0..nym] of byte;
   {Byte Value of A (binary): [00YXcccc] }
   Xw,Yw,MaxX,MaxY:Integer;
	IColor:Byte;
	Ndelay:LongInt;
	Kcolor:Boolean;
   Stack:^StackArr;
   Istack:Integer;
	IYDoor:Integer;

procedure VgaDrive; 	external; {$L EGAVGA.OBJ }

{------ BEGIN OF STACK ADT ------ }
procedure InitStack;
begin
	New(Stack);
   Istack:=0;
end;

Procedure Push(I,j:Integer);
begin
	If Istack>=MaxStack then
   begin Writeln('Stack overflow !'); Halt; end;
	Inc(Istack);
   With Stack^[Istack] do
	begin
		X:=i; Y:=J;
	end;
end;

Procedure GetTop(var I,j:Integer);
begin
   With Stack^[Istack] do
   begin
		I:=X; J:=Y;
	end;
end;

Procedure Pop;
begin
	If IStack>0 then Dec(Istack);
end;

{------ END OF STACK ADT ------ }

procedure WaitKey(var ch:Char);
begin
   repeat  until keypressed;
   ch:=readKey;
end;

procedure GetParameters;
var
	S:String;
   C:Char;
   I:Integer;
begin
	Clrscr;
   Write('Enter Maze size_X, [3..300], (Def:',Nx,') :');
	Readln(S);
	if S<>'' then Val(S,Nx,I);
	if Nx>Nxm then Nx:=Nxm;
	if Nx<3 then Nx:=3;
	Write('Enter Maze size_Y, [3..210], (Def:',Ny,') :');
	Readln(S);
	if S<>'' then Val(S,Ny,I);
	if Ny>Nym then Ny:=Nym;
	if Ny<3 then Ny:=3;
	Nxy:=LongInt(Nx-1)*(Ny-1);
	Ndelay:=15000000 div Nxy;
	if Ndelay>30000 then Ndelay:=30000;


   Write('Color or Mono: (C/M), (Def:M) :');
	Readln(S);
   C:='M';
	if S<>'' then C:=upcase(S[1]);
   Kcolor:= (C='C');
end;

procedure NextStep(Km:Boolean; I,J:integer;
						var I1,j1:Integer; var Success:boolean);
{ Km: True=to find root, False=to find space }
var
	Ns0,NS:integer;
begin
   NS0:=Random(4);
   Ns:=Ns0;
	repeat
	   I1:=I+Idx[Ns];
		J1:=J+Idy[Ns];
      if not(Km xor (A[i1,j1]>0)) then
		begin
         Success:=True;
         Exit;
      end;
      Ns:=(Ns+1) mod 4;
   until Ns=Ns0;
   Success:=False;
end;

procedure DrawWall(i,j,i1,j1:Integer);
{precondition: (i,j) is used, (i1,j1) is space,
	then color of ground is 15 }
var
	C:Byte;
   I2,j2:Integer;
begin
	C:=A[i,j] and 15; {And 00001111}
	if C=15 then
   begin
   	C:=Icolor; Icolor:=(Icolor mod 14)+1;
	end;
   if not Kcolor then C:=15;
	SetColor(C);
	line(i*xw,j*yw,i1*xw,j1*yw);

   A[i1,j1]:=C;

   if i=i1 then
   begin
	   if J1>J then J2:=J1 else J2:=J;
      A[i,j2]:=A[i,J2] or 32;
   end else
   begin
	   if I1>I then I2:=I1 else I2:=I;
      A[I2,J]:=A[I2,J] or 16;
   end;
end;

procedure OpenDoor;
begin
	IyDoor:=(ny div 2);
   Setcolor(0);
	Line(0,iyDoor*Yw,0,(IyDoor+1)*Yw);
	Line(Nx*Xw,iyDoor*Yw,Nx*Xw,(IyDoor+1)*Yw);
   Setcolor(7);

	A[0,IyDoor+1]:=A[0,IyDoor+1] and (not 32);
	A[Nx,IyDoor+1]:=A[Nx,IyDoor+1] and (not 32);
end;

procedure GraphInit;
var
	Gd,Gm:integer;
begin
	if RegisterBGIdriver(@VGADrive) < 0 then
	begin
	  Writeln('Error registering driver: ',GraphErrorMsg(GraphResult));
	  Halt(1);
	end;
	{Gd:=DETECT;}
   gd:=VGA;
	gm:=VGAHI;
	initGraph(Gd,Gm,'');
	maxx:=GetMaxX; {GetMaxX: 639}
	maxy:=GetMaxY; {GetMaxY: 479}
	Xw:=MaxX div Nx;
	Yw:=MaxY div Ny;
end;

procedure CreateMaze;
var
	x:longInt;
	Nevent,Idelay:LongInt;
	NFind,Ngrow:Integer;
	i,j,i1,j1:Integer;
	ks:Boolean;
	ch:Char;
begin
	for i:=0 to Nx do
		for j:=0 to Ny do
			A[i,j]:=0;
   for j:=0 to ny do
	begin
  		A[ 0,j]:=A[ 0,j] or 47; { 47=15 or 32 }
  		A[Nx,j]:=A[Nx,j] or 47;
	end;
   for i:=0 to nx  do
	begin
		A[i, 0]:=A[i, 0] or 31; { 31= 15 or 16}
		A[i,Ny]:=A[i, 0] or 31;
	end;
   SetColor(15);
   Rectangle(0,0,Nx*Xw,Ny*Yw);
   repeat
	   Nevent:=0;
	   x:=0;
		repeat
	     	i:=x mod (NX-1) + 1;
			j:=x div (NX-1) + 1;
	      if A[i,j]=0 then
	      begin
				{ find root }
	         Inc(Nevent);
            NFind:=0;
		      repeat
					NextStep(True,i,j,i1,j1,Ks);
	            if not Ks  then
	            begin
				      i:=i1;
				      j:=j1;
					end;
               inc(NFind);
			   until Ks or (Nfind>=MaxFind);
            if ks then
            begin
	            DrawWall(I1,j1,i,j);
					{Grow branch}
	            NGrow:=0;
				   repeat
				   	NextStep(False,i,j,i1,j1,Ks);
				      if Ks then
						begin
			            DrawWall(i,j,I1,j1);
		               i:=i1;
					      j:=j1;
							Inc(NGrow);
			         end;
					For IDelay:=1 to Ndelay do;
 				   until (Not Ks) or (NGrow>=MaxGrow);
            end;
			end;
			x:=(x+s) mod Nxy;
		until x=0;
{      Write(Nevent,' ');}
	until	Nevent=0;
	OpenDoor;
	sound(880);   Delay(500);   Nosound;
	WaitKey(ch);
end;

Function Jy(J:Integer):Integer;
begin
 	Jy:=J*Yw+Yw div 2;
end;

Function Jx(J:Integer):Integer;
begin
  	Jx:=J*Xw+Xw div 2;
end;

Function GetWall(i,j,Id:Integer):Boolean;
var
	K:Boolean;
begin
	case Id of
   0: K:=(A[I+1,J+1] and 32)=32;
   1: K:=(A[I+1,J  ] and 16)=16;
   2: K:=(A[I  ,J+1] and 32)=32;
   3: K:=(A[I+1,J+1] and 16)=16;
   end;
   getWall:=k;
end;

procedure MouseSearch;
var
 	I,j,i1,j1,i2,j2:Integer;
   X,y,x1,y1:Integer;
   Id:Integer;
   IDelay:LongInt;
   Ch:Char;
begin
	I:=0; J:=IyDoor;
   Id:=0;
   SetColor(13);
   X:=Jx(i); Y:=Jy(j);
   Line(0,y,x,y);
   Push(-1,J);
   Repeat
      Id:=(Id+1) Mod 4;
   	While GetWall(i,j,Id) do
      begin
      	Id:=(Id+3) mod 4;  { id=id-1 }
      End;
      I1:=I+Idx[Id];
		J1:=J+Idy[Id];
      X1:=Jx(I1); Y1:=Jy(J1);
      GetTop(I2,J2);
      if (i2=i1) and (j2=J1) then
		begin
      	Pop;
			Setcolor(0);
      end Else
		begin
			Push (I,J);
			Setcolor(13);
      end;
		Line(x,y,x1,y1);
      I:=i1; J:=J1;
      X:=X1; Y:=Y1;
		For IDelay:=1 to Ndelay do;
		delay(1);
      if Keypressed then ch:=Readkey;
   until (I=Nx) or (ch=#27);
   Push(i,j);
	Sound(1340); delay(300); nosound;
end;

Procedure RedrawMaze;
var
	i,j:Integer;
begin
	ClearDevice;
	SetColor(6);
	For j:=0 to Ny do
	begin
		for i:=1 to Nx do
		begin
			if (A[i,j] and 16) =16 then
			line((i-1)*Xw,j*Yw,i*Xw,j*Yw);
		end;
		Delay(1);
	end;
	For i:=0 to Nx do
	begin
		for j:=1 to Ny do
		begin
			if (A[i,j] and 32) =32 then
         line(I*Xw,(j-1)*Yw,i*Xw,j*Yw);
      end;
		Delay(10);
	end;
end;

procedure SecondSearch;
var
	k:integer;
   i,j,i1,j1:Integer;
   ch:Char;
begin
	I:=Stack^[1].x;
	J:=Stack^[1].y;
   {Clear old path on screen}
   Setcolor(0);
   for k:=2 to Istack do
   begin
		I1:=Stack^[k].x;
		J1:=Stack^[k].y;
		line(jx(i),jy(j),jx(i1),jy(j1));
		I:=I1; J:=J1;
	end;
	{Redraw Maze}
	RedrawMaze;
	{Redraw found path}
	I:=Stack^[1].x;
	J:=Stack^[1].y;
   Setcolor(10);
   for k:=2 to Istack do
   begin
		I1:=Stack^[k].x;
		J1:=Stack^[k].y;
		line(jx(i),jy(j),jx(i1),jy(j1));
      I:=I1; J:=J1;
		delay(20);
	end;

   Sound(440); delay(300); nosound;
   WaitKey(ch);
end;

begin
   DirectVideo:=False; {enable to write text on graphic screen }
	Randomize;
	Icolor:=1;

	getParameters;
	GraphInit;
	CreateMaze;
	InitStack;
	MouseSearch;
	SecondSearch;
	closeGraph;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品一区二区麻豆网站 | 国内精品不卡在线| 亚洲色图制服诱惑 | 国产69精品久久777的优势| 另类小说图片综合网| 九九在线精品视频| 极品少妇一区二区| 国产福利一区二区三区视频| 国内精品视频666| 国产传媒日韩欧美成人| 丁香激情综合国产| 色偷偷久久人人79超碰人人澡| 色播五月激情综合网| 欧美在线观看你懂的| 欧美一二三区在线| 精品粉嫩超白一线天av| 中文字幕精品一区二区三区精品| 中文字幕不卡在线| 亚洲一区二区高清| 免费欧美在线视频| 国产成人精品aa毛片| 97精品久久久久中文字幕| 欧美日韩在线三区| 日韩精品一区二区三区四区 | 成人精品gif动图一区| 91色.com| 日韩精品一区二区三区在线 | 欧美电视剧在线看免费| 国产欧美一区二区三区在线老狼 | 欧美一级免费观看| 亚洲国产精品黑人久久久| 一区二区三区 在线观看视频| 蜜臀av一区二区在线免费观看 | 亚洲日本丝袜连裤袜办公室| 亚洲成人动漫在线免费观看| 国产寡妇亲子伦一区二区| 在线看国产一区二区| 久久免费看少妇高潮| 亚洲电影视频在线| 国产a区久久久| 9191国产精品| 亚洲日本成人在线观看| 久久99国产精品麻豆| 欧美在线观看视频在线| 日本一区二区不卡视频| 蜜臀av亚洲一区中文字幕| 91蝌蚪porny| 久久久精品影视| 免费观看91视频大全| 91亚洲精品乱码久久久久久蜜桃| 欧美tk丨vk视频| 亚洲色图视频免费播放| 国产精品亚洲专一区二区三区| 精品视频全国免费看| 中文字幕一区二区三区精华液| 麻豆成人av在线| 在线不卡a资源高清| 一区二区三区中文字幕电影| 国产成人超碰人人澡人人澡| 欧美一二三四在线| 狠狠色狠狠色合久久伊人| 欧美日韩大陆一区二区| 亚洲欧美日本在线| 9人人澡人人爽人人精品| 久久久久国色av免费看影院| 久久狠狠亚洲综合| 欧美成人高清电影在线| 日本不卡一二三| 欧美日韩国产精品成人| 亚洲成人精品在线观看| 欧美日韩视频在线第一区| 亚洲最快最全在线视频| 一本大道久久a久久综合婷婷| 国产免费久久精品| 成人av电影在线观看| 国产精品初高中害羞小美女文| 国产91高潮流白浆在线麻豆| 国产蜜臀97一区二区三区| heyzo一本久久综合| 亚洲欧美影音先锋| 欧美曰成人黄网| 日韩影院免费视频| 91精品欧美福利在线观看| 麻豆免费精品视频| 久久网这里都是精品| 成人av网站在线| 亚洲国产精品麻豆| 精品入口麻豆88视频| 狠狠久久亚洲欧美| 国产精品不卡在线| 色婷婷av一区二区三区之一色屋| 亚洲大片精品永久免费| 日韩午夜精品电影| 成人午夜视频在线观看| 一区二区三区在线视频观看| 欧美日韩精品福利| 国内精品不卡在线| 亚洲乱码中文字幕| 日韩手机在线导航| 99精品热视频| 免费高清在线视频一区·| 精品国产自在久精品国产| av亚洲精华国产精华精| 天天色天天爱天天射综合| xnxx国产精品| 在线观看av一区二区| 韩国成人福利片在线播放| 亚洲精品亚洲人成人网在线播放| 7777精品伊人久久久大香线蕉经典版下载| 精品一区二区影视| 亚洲精品成人少妇| 日韩欧美不卡在线观看视频| 97久久精品人人做人人爽| 久久99精品网久久| 一区二区三区电影在线播| 久久理论电影网| 欧美精品在线一区二区三区| 菠萝蜜视频在线观看一区| 日韩精品国产精品| 亚洲免费在线视频| xnxx国产精品| 日韩一区二区三区免费看| 色婷婷久久久综合中文字幕| 国产精品一区二区你懂的| 免费观看91视频大全| 亚洲午夜三级在线| 国产精品福利一区| 国产女主播视频一区二区| 日韩欧美综合一区| 欧美日韩成人综合在线一区二区| 99久久国产综合色|国产精品| 国产精品一区专区| 蜜臀99久久精品久久久久久软件| 亚洲国产欧美另类丝袜| 亚洲靠逼com| 中文字幕av在线一区二区三区| 精品女同一区二区| 678五月天丁香亚洲综合网| 色婷婷av一区二区三区gif | 日韩黄色免费电影| 亚洲一区免费在线观看| 最新中文字幕一区二区三区 | 亚洲国产美国国产综合一区二区| 中文字幕日韩一区二区| 国产精品毛片a∨一区二区三区| 久久久久亚洲蜜桃| 久久久久亚洲蜜桃| 欧美韩国日本不卡| 国产精品久久久99| 国产欧美日韩综合| 国产精品久久久久一区二区三区| 久久久五月婷婷| 国产日韩综合av| 国产精品美女久久久久久久网站| 国产欧美精品一区二区三区四区 | 看电影不卡的网站| 久久精品国产色蜜蜜麻豆| 精品在线免费观看| 国产成人精品三级| 91在线看国产| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色吧成人激情小说| 欧美麻豆精品久久久久久| 欧美久久久久久久久中文字幕| 欧美一区二区视频网站| 欧美精品一区二区精品网| 国产欧美精品一区| 亚洲一区在线视频| 日产欧产美韩系列久久99| 精品系列免费在线观看| 国产宾馆实践打屁股91| 色哟哟一区二区三区| 4hu四虎永久在线影院成人| xfplay精品久久| 亚洲人成7777| 免费在线观看一区| 不卡一区中文字幕| 欧美一级二级在线观看| 国产欧美日韩视频在线观看| 亚洲综合男人的天堂| 久久精品国产亚洲高清剧情介绍| 成人av电影在线| 制服丝袜亚洲精品中文字幕| 久久久久久久综合色一本| 亚洲午夜免费电影| 国产一区二区三区四区五区美女| av资源站一区| 精品久久久网站| 一区二区三区在线视频免费 | 不卡欧美aaaaa| 欧美日韩视频专区在线播放| 久久久久99精品国产片| 亚洲国产精品久久艾草纯爱| 久久99久久久久久久久久久| 91在线观看成人| 久久色中文字幕| 日韩精品一二三四| 91福利区一区二区三区| 久久色成人在线| 日本怡春院一区二区|