PROCEDURE faltkarte;
CONST 
	pageWidth=210;
	pageHeight=297;
	pageFoldY=148.5;
VAR
	objectX1,objectX2,objectX3,objectX4,objectY1,objectY2,objectY3,objectY4,objectY5,objectY6,objectY7:REAL;
	width,height,distance,depht:	REAL;
	nVolumes:  INTEGER;
	i:INTEGER;
	makeRandomHeight:BOOLEAN;
	makeRandomDepht:BOOLEAN;

BEGIN
	{*werte in variablen speichern*}
	nVolumes:=9;
	distance:=10;
	makeRandomHeight:=true;
	makeRandomDepht:=true;

	{*breite der Volumes berechnen*}	
	width:= (pageWidth-(nVolumes+1)*distance)/(nVolumes);
	
	{*dina a4 blatt zeichnen*}
	penFore(0,0,65535);
	moveto(0,0);
	lineto(pageWidth,0);
	lineto(pageWidth,pageHeight);
	lineto(0,pageHeight);
	lineto(0,0);

	{*zum ersten papierfaltpunkt bewegen*}
	moveto(0,pageFoldY);

	{*in dieser Schleife werden die Volumes gezeichnet*}
	FOR i:=0 TO nVolumes-1 DO BEGIN
			
		{*links und rechts des Volumes berechnen*}
		objectX1:=i*(distance+width)+distance;
		objectX2:=objectX1+width;

		(*links und rechts der auskragungen berechnen*)
		objectX3:=objectX1+(width/4);
		objectX4:=objectX2-(width/4);

		{*Wenn gewünscht, dann höhe zufällig berechnen*}
		IF (makeRandomHeight=true) THEN BEGIN
			height:=80-Random*60;
		END 
		ELSE BEGIN
			height:=80-i*10; 
		END;

		{*Wenn gewünscht, dann tiefe zufällig berechnen*}
		IF (makeRandomDepht=true) THEN BEGIN
			depht:=80-Random*60;
		END 
		ELSE BEGIN
			depht:=80-i*10; 
		END;

		{*yWerte für die Linien berechnen*}
		objectY1:=pageFoldY-depht;
		objectY3:=objectY1+height;
		objectY2:=objectY3+depht;
		objectY4:=objectY1-(height/2);
		objectY5:=objectY1+(height/2);
		objectY6:=objectY2-(depht/2);
		objectY7:=objectY2+(depht/2);

		{*papier faltkanten zeichnen*}
		penFore(65535,0,0);		
		lineTo(objectX1,pageFoldY);

		{*schnittkanten zeichnen*}
		penFore(0,0,65535);
		moveto(objectX1,objectY1);
		lineto(objectX1,objectY2);
		moveto(objectX2,objectY1);
		lineto(objectX2,objectY2);

		(*untere auskragung*)
		moveto(objectX3,objectY4);
		lineto(objectX3,objectY5);
		moveto(objectX4,objectY4);
		lineto(objectX4,objectY5);

		(*obere auskragung*)
		moveto(objectX3,objectY6);
		lineto(objectX3,objectY7);
		moveto(objectX4,objectY6);
		lineto(objectX4,objectY7);

		{*volumen faltkanten zeichnen*}
		penFore(65535,0,0);
		moveto(objectX1,objectY1);
		lineto(objectX2,objectY1);
		moveto(objectX1,objectY2);
		lineto(objectX2,objectY2);
		moveto(objectX1,objectY3);
		lineto(objectX2,objectY3);

		(*untere auskragung*)
		moveto(objectX3,objectY4);
		lineto(objectX4,objectY4);
		moveto(objectX3,objectY5);
		lineto(objectX4,objectY5);

		(*obere auskragung*)
		moveto(objectX3,objectY6);
		lineto(objectX4,objectY6);
		moveto(objectX3,objectY7);
		lineto(objectX4,objectY7);
		
		{*zum nächsten papierfaltpunkt bewegen*}
		moveto(objectX2,pageFoldY);

	END;
	
	{*letzten papierfaltpunkt zeichen*}
	penFore(65535,0,0);
	lineTo(pageWidth,pageFoldY);
	
END;
RUN(faltkarte);