PROCEDURE Blockrand;

VAR
	laenge,breite,hoehe,tiefe,dachhoehe,tpos:REAL;
	i,z,zf:INTEGER;
	zufallfenster:BOOLEAN;

BEGIN
	laenge:=PLAENGE;
	breite:=PBREITE;
	hoehe:=PHOEHE;
	tiefe:=PTIEFE;
	dachhoehe:=PDACHHOEHE;
	zufallfenster:=PZUFALLFENSTER;
	tpos:=Random;	

	IF(zufallfenster)=true THEN BEGIN
	zf:=0;
	END
	ELSE BEGIN
	zf:=1;
	END;	

	IF(laenge/2.5<tiefe)=true THEN BEGIN
	tiefe:=laenge/2.5;
	END;

	IF(breite/2.5<tiefe)=true THEN BEGIN
	tiefe:=breite/2.5;
	END;

	{if(laenge/tiefe<2+1/10*tiefe)=true then begin AlertCritical('Was söll de Scheiss Mann?', 'Dini Längi isch z kurz oder d Tiefi z gross');

	END;
	
	if(breite/tiefe<2+1/10*tiefe)=true then begin AlertCritical('Was söll de Scheiss Mann?', 'Dini Breiti isch z kurz oder d Tiefi z gross');
	
	END;}

{Laschen}
	
	MoveTo(0,-tiefe/3);
	LineTo(-hoehe,-tiefe/3);
	LineTo(-hoehe,0);

	MoveTo(0,breite+tiefe/3);
	LineTo(-hoehe,breite+tiefe/3);
	LineTo(-hoehe,breite);

	MoveTo(laenge,-tiefe/3);
	LineTo(laenge+hoehe,-tiefe/3);
	LineTo(laenge+hoehe,0);

	MoveTo(laenge,breite+tiefe/3);
	LineTo(laenge+hoehe,breite+tiefe/3);
	LineTo(laenge+hoehe,breite);
	
{Blockrand unten}

	Rect(0,0,laenge,-hoehe);
	MoveTo(0,-hoehe);

	IF(dachhoehe=0)=true THEN BEGIN

	FillBack(60000,60000,60000);
	BeginPoly;
	AddPoint(0,-hoehe);
	AddPoint(tiefe,-tiefe-hoehe);
	AddPoint(laenge-tiefe,-hoehe-tiefe);
	AddPoint(laenge,-hoehe);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	
	Rect(tiefe,-tiefe-hoehe,laenge-tiefe,-tiefe-2*hoehe);
	MoveTo(tiefe,-tiefe-2*hoehe);
	LineTo(tiefe+tiefe/3,-tiefe-2*hoehe-0.3*tiefe);
	LineTo(laenge-tiefe-tiefe/3,-tiefe-2*hoehe-0.3*tiefe);
	LineTo(laenge-tiefe,-tiefe-2*hoehe);
	
	END
	ELSE BEGIN

	FillPat(11);
	BeginPoly;
	AddPoint(0,-hoehe);
	AddPoint(tiefe,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-hoehe);
	AddPoint(laenge-tiefe,-hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))));
	AddPoint(laenge,-hoehe);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	FillFore(65535,65535,65535);
	
	MoveTo(tiefe/2,-hoehe-((2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))))/2);
	LineTo(laenge-(tiefe/2),-hoehe-(2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))))/2);
	Rect(tiefe,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-hoehe,laenge-tiefe,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-2*hoehe);
	MoveTo(tiefe,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-2*hoehe);
	LineTo(tiefe+tiefe/3,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-2*hoehe-0.3*tiefe);
	LineTo(laenge-tiefe-tiefe/3,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-2*hoehe-0.3*tiefe);
	LineTo(laenge-tiefe,-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-2*hoehe);

	END;

{Grundriss}

	Rect(0,0,laenge,breite);
	Rect(tiefe,tiefe,laenge-tiefe,breite-tiefe);

{Blockrand oben}
	
	IF(dachhoehe=0)=true THEN BEGIN

	Rect(0,breite,laenge,hoehe+breite);

	FillBack(60000,60000,60000);
	BeginPoly;
	AddPoint(0,breite+hoehe);
	AddPoint(tiefe,tiefe+hoehe+breite);
	AddPoint(laenge-tiefe,+hoehe+tiefe+breite);
	AddPoint(laenge,hoehe+breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);

	MoveTo(0,breite+hoehe);
	LineTo(tiefe,tiefe+hoehe+breite);
	LineTo(laenge-tiefe,+hoehe+tiefe+breite);
	LineTo(laenge,hoehe+breite);

	Rect(tiefe,hoehe+tiefe+breite,laenge-tiefe,2*hoehe+tiefe+breite);
	MoveTo(tiefe,2*hoehe+tiefe+breite);
	LineTo(tiefe+tiefe/3,2*hoehe+tiefe+0.3*tiefe+breite);
	LineTo(laenge-tiefe-tiefe/3,2*hoehe+tiefe+0.3*tiefe+breite);
	LineTo(laenge-tiefe,2*hoehe+tiefe+breite);

	END
	ELSE BEGIN
	
	Rect(0,breite,laenge,hoehe+breite);

	FillBack(65535,65535,65535);
	FillFore(0,0,0);
	FillPat(11);
	BeginPoly;
	AddPoint(0,breite+hoehe);
	AddPoint(tiefe,2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+hoehe+breite);
	AddPoint(laenge-tiefe,+hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);
	AddPoint(laenge,hoehe+breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	FillFore(65535,65535,65535);

	MoveTo(tiefe/2,hoehe+(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);
	LineTo(laenge-(tiefe/2),hoehe+(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);
	Rect(tiefe,hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite,laenge-tiefe,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);
	MoveTo(tiefe,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);
	LineTo(tiefe+tiefe/3,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+0.3*tiefe+breite);
	LineTo(laenge-tiefe-tiefe/3,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+0.3*tiefe+breite);
	LineTo(laenge-tiefe,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+breite);

	END;

{Blockrand links}

	IF(dachhoehe=0)=true THEN BEGIN

	Rect(0,0,-hoehe,breite);

	FillBack(60000,60000,60000);
	BeginPoly;
	AddPoint(-hoehe,0);
	AddPoint(-tiefe-hoehe,tiefe);
	AddPoint(-hoehe-tiefe,breite-tiefe);
	AddPoint(-hoehe,breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	
	Rect(-hoehe-tiefe,tiefe,-2*hoehe-tiefe,breite-tiefe);
	MoveTo(-2*hoehe-tiefe,tiefe);
	LineTo(-2*hoehe-tiefe-0.3*tiefe,tiefe+tiefe/3);
	LineTo(-2*hoehe-tiefe-0.3*tiefe,breite-tiefe-tiefe/3);
	LineTo(-2*hoehe-tiefe,breite-tiefe);

	END
	ELSE BEGIN

	Rect(0,0,-hoehe,breite);

	FillBack(65535,65535,65535);
	FillFore(0,0,0);
	FillPat(11);
	BeginPoly;
	AddPoint(-hoehe,0);
	AddPoint(-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-hoehe,tiefe);
	AddPoint(-hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),breite-tiefe);
	AddPoint(-hoehe,breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	FillFore(65535,65535,65535);

	MoveTo(-hoehe-(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),tiefe/2);
	LineTo(-hoehe-(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),breite-(tiefe/2));
	Rect(-hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),tiefe,-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),breite-tiefe);
	MoveTo(-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),tiefe);
	LineTo(-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-0.3*tiefe,tiefe+tiefe/3);
	LineTo(-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-0.3*tiefe,breite-tiefe-tiefe/3);
	LineTo(-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe))),breite-tiefe);

	END;

{Blockrand rechts}

	IF(dachhoehe=0)=true THEN BEGIN

	Rect(laenge,0,hoehe+laenge,breite);

	FillBack(60000,60000,60000);
	BeginPoly;
	AddPoint(laenge+hoehe,0);
	AddPoint(tiefe+hoehe+laenge,tiefe);
	AddPoint(hoehe+tiefe+laenge,breite-tiefe);
	AddPoint(hoehe+laenge,breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);

	Rect(hoehe+tiefe+laenge,tiefe,2*hoehe+tiefe+laenge,breite-tiefe);
	MoveTo(2*hoehe+tiefe+laenge,tiefe);
	LineTo(2*hoehe+tiefe+0.3*tiefe+laenge,tiefe+tiefe/3);
	LineTo(2*hoehe+tiefe+0.3*tiefe+laenge,breite-tiefe-tiefe/3);
	LineTo(2*hoehe+tiefe+laenge,breite-tiefe);

	END
	ELSE BEGIN

	Rect(laenge,0,hoehe+laenge,breite);

	FillBack(65535,65535,65535);
	FillFore(0,0,0);
	FillPat(11);
	BeginPoly;
	AddPoint(laenge+hoehe,0);
	AddPoint(2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+hoehe+laenge,tiefe);
	AddPoint(hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,breite-tiefe);
	AddPoint(hoehe+laenge,breite);
	ClosePoly;
	EndPoly;
	FillBack(65535,65535,65535);
	FillFore(65535,65535,65535);

	MoveTo(hoehe+(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,tiefe/2);
	LineTo(hoehe+(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,breite-(tiefe/2));
	Rect(hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,tiefe,2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,breite-tiefe);
	MoveTo(2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,tiefe);
	LineTo(2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+0.3*tiefe+laenge,tiefe+tiefe/3);
	LineTo(2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+0.3*tiefe+laenge,breite-tiefe-tiefe/3);
	LineTo(2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+laenge,breite-tiefe);
	
	END;	

{Fenster}
	
	FillFore(50000, 50000, 50000);
	FillBack(50000, 50000, 50000);
	
{UNTEN}
	{AUSSEN}

	FOR i:=-((Round(laenge/4)-2)/2) TO ((Round(laenge/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,-4*z-1+Random*0.8*zf,i*4+laenge/2+1+0.5*Random*zf,-4*z-3-0.5*Random*zf)

	END;	
	
	END;

	{INNEN}	
	IF(Dachhoehe=0)=true THEN BEGIN

	FOR i:=-((Round((laenge-(2*tiefe))/4)-2)/2) TO ((Round((laenge-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,-2*hoehe-tiefe+4*z+1+Random*0.8*zf,i*4+laenge/2+1+0.5*Random*zf,-2*hoehe-tiefe+4*z+3-0.5*Random*zf)

	END;	
	
	END;

	END
	ELSE BEGIN

	FOR i:=-((Round((laenge-(2*tiefe))/4)-2)/2) TO ((Round((laenge-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+4*z+1+Random*0.8*zf,i*4+laenge/2+1+0.5*Random*zf,-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+4*z+3-0.5*Random*zf)

	END;	
	
	END;
	END;
	
	{TUERE}

	Rect((Round((tpos*(laenge/4)))-Round(laenge/8))*4+laenge/2-1.5,0,((Round((tpos*(laenge/4)))-Round((laenge/8))))*4+laenge/2+1.5,-4);

{OBEN}
	{AUSSEN}

	FOR i:=-((Round(laenge/4)-2)/2) TO ((Round(laenge/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,4*z+1-Random*0.8*zf+breite,i*4+laenge/2+1+0.5*Random*zf,4*z+3+0.5*Random*zf+breite)

	END;	
	
	END;

	{INNEN}	
	IF(Dachhoehe=0)=true THEN BEGIN

	FOR i:=-((Round((laenge-(2*tiefe))/4)-2)/2) TO ((Round((laenge-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,2*hoehe+tiefe+breite-4*z-1-Random*0.8*zf,i*4+laenge/2+1+0.5*Random*zf,2*hoehe+breite+tiefe-4*z-3+0.5*Random*zf)

	END;	
	
	END;

	END
	ELSE BEGIN

	FOR i:=-((Round((laenge-(2*tiefe))/4)-2)/2) TO ((Round((laenge-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(4*i+laenge/2-1+Random*0.5*zf,2*hoehe+breite+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-4*z-1-Random*0.8*zf,i*4+laenge/2+1+0.5*Random*zf,2*hoehe+breite+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-4*z-3+0.5*Random*zf)

	END;	
	
	END;
	END;

	{TUERE}

	Rect((Round(((1-tpos)*(laenge/4)))-Round(laenge/8))*4+laenge/2+1.5,breite,(Round(((1-tpos)*(laenge/4)))-Round(laenge/8))*4+laenge/2-1.5,breite+4);

{LINKS}
	{AUSSEN}

	FOR i:=-((Round(breite/4)-2)/2) TO ((Round(breite/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(-4*z-1+Random*0.8*zf,4*i+breite/2-1+Random*0.5*zf,-4*z-3-0.5*Random*zf,i*4+breite/2+1+0.5*Random*zf)

	END;	
	
	END;

	{INNEN}	
	IF(Dachhoehe=0)=true THEN BEGIN

	FOR i:=-((Round((breite-(2*tiefe))/4)-2)/2) TO ((Round((breite-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(-2*hoehe-tiefe+4*z+1+Random*0.8*zf,4*i+breite/2-1+Random*0.5*zf,-2*hoehe-tiefe+4*z+3+0.5*Random*zf,i*4+breite/2+1-0.5*Random*zf)

	END;	
	
	END;

	END
	ELSE BEGIN

	FOR i:=-((Round((breite-(2*tiefe))/4)-2)/2) TO ((Round((breite-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+4*z+1+Random*0.8*zf,4*i+breite/2-1+Random*0.5*zf,-2*hoehe-2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))+4*z+3-0.5*Random*zf,i*4+breite/2+1+0.5*Random*zf)

	END;	
	
	END;
	END;

{RECHTS}
	{AUSSEN}

	FOR i:=-((Round(breite/4)-2)/2) TO ((Round(breite/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(laenge+4*z+1-Random*0.8*zf,4*i+breite/2-1-Random*0.5*zf,laenge+4*z+3-0.5*Random*zf,i*4+breite/2+1+0.5*Random*zf)

	END;	
	
	END;

	{INNEN}	
	IF(Dachhoehe=0)=true THEN BEGIN

	FOR i:=-((Round((breite-(2*tiefe))/4)-2)/2) TO ((Round((breite-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(laenge+2*hoehe+tiefe-4*z-1+Random*0.8*zf,4*i+breite/2-1+Random*0.5*zf,laenge+2*hoehe+tiefe-4*z-3+0.5*Random*zf,i*4+breite/2+1-0.5*Random*zf)

	END;	
	
	END;

	END
	ELSE BEGIN

	FOR i:=-((Round((breite-(2*tiefe))/4)-2)/2) TO ((Round((breite-(2*tiefe))/4)-2))/2 DO BEGIN
	FOR z:=0 TO	Round(hoehe/4)-2 DO BEGIN

	Rect(laenge+2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-4*z-1-Random*0.8*zf,4*i+breite/2-1-Random*0.5*zf,laenge+2*hoehe+2*(Sqrt(Sqr(tiefe/2)+Sqr(dachhoehe)))-4*z-3+0.5*Random*zf,i*4+breite/2+1+0.5*Random*zf)

	END;	
	
	END;
	END;

END;

RUN(Blockrand);