PROCEDURE faltkarte;
CONST 
	pageWidth=210;
	pageHeight=297;
	pageFoldY=148.5;
	randabstand=30;
	width= 6;

VAR
	objectX1,objectX2,objectY1,objectY2,objectY3:REAL;
	depth,height:	REAL;
	nVolumes:  INTEGER;
	i:INTEGER;
	makeRandomHeight:BOOLEAN;

BEGIN
	{*werte in variablen speichern*}
	nVolumes:=14;
	makeRandomHeight:=true;

	{*din 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);

	IF (makerandomheight=true) THEN BEGIN
			height:=12;
		END
		ELSE BEGIN
			height:=44;
		END;

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

		{*Tiefe des Körpers berechnen, steigt von volume zu volume*}
		depth:=(-6+(14-i)*(-i/2))/2+50;

		{*Wenn gewünscht, dann höhe zufällig berechnen*}

		{*yWerte für die Linien berechnen*}
		objectY1:=pageFoldY - depth;
		objectY3:=pageFoldY + height;
		objectY2:=(objectY3)-depth;
		
		{*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);
        
		IF (i=0) THEN BEGIN
			moveto(objectX1,objectY1);
			lineto(objectX1,objectY3+12);
			
		END;

		IF (i=nVolumes-1) THEN BEGIN
			moveto(objectX2,objectY1);
			lineto(objectX2,pageFoldY);
		END;

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

		{*oberster faltstrich des volumens*}
		IF (i=0) THEN BEGIN			
		moveto(objectX1,objectY3+12);
		lineto(96,objectY3+12);
		END;

		{*zum nächsten papierfaltpunkt bewegen*}
		moveto(objectX2,pageFoldY);
	
END;

BEGIN
	{*werte in variablen speichern*}
	nVolumes:=14;
	makeRandomHeight:=true;

	{*din 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);

	IF (makerandomheight=true) THEN BEGIN
			height:=12;
		END
		ELSE BEGIN
			height:=44;
		END;

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

		{*Tiefe des Körpers berechnen, steigt von volume zu volume*}
		depth:=(-3+(14-i)*(i/2))/2+70;

		{*Wenn gewünscht, dann höhe zufällig berechnen*}

		{*yWerte für die Linien berechnen*}
		objectY1:=pageFoldY - depth;
		objectY3:=pageFoldY + height;
		objectY2:=objectY3-depth;
		
		{*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);
        
		IF (i=0) THEN BEGIN
			moveto(objectX1,objectY1);
			lineto(objectX1,objectY3);
			
		END;

		IF (i=nVolumes-1) THEN BEGIN
			moveto(objectX2,objectY1);
			lineto(objectX2,pageFoldY);
		END;

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

		{*oberster faltstrich des volumens*}
		IF (i=0) THEN BEGIN			
		moveto(objectX1,objectY3+12);
		lineto(96,objectY3+12);
		END;

		{*zum nächsten papierfaltpunkt bewegen*}
		moveto(objectX2,pageFoldY);
	
END;

	
END;

	

BEGIN

	

	

	

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

		{*Tiefe des Körpers berechnen, steigt von volume zu volume*}
		depth:=height;

		{*Wenn gewünscht, dann höhe zufällig berechnen*}

		{*yWerte für die Linien berechnen*}
		objectY1:=pageFoldY - height;
		objectY3:=pageFoldY + 6+(nVolumes-i-1)*(i/2)+60;
		objectY2:=pageFoldY + 6+(nVolumes-i-1)*(i/2)-height+60;
		
		{*papier faltkanten zeichnen*}
		penFore(65535,0,0);		
		lineTo(objectX1,pageFoldY);

		{*schnittkanten zeichnen*}
		penFore(0,0,65535);
		moveto(objectX1,objectY2);
		lineto(objectX1,objectY3);
		moveto(objectX2,objectY2);
		lineto(objectX2,objectY3);
        
		IF (i=0) THEN BEGIN
			moveto(objectX1,pageFoldY);
			lineto(objectX1,objectY3);
		END;

		IF (i=nVolumes-1) THEN BEGIN
			moveto(objectX2,objectY1-12);
			lineto(objectX2,objectY3);
		END;

		{*volumen faltkanten zeichnen*}
		penFore(65535,0,0);
		moveto(objectX1,objectY3);
		lineto(objectX2,objectY3);
		moveto(objectX1,objectY2);
		lineto(objectX2,objectY2);
		
		{*unterster faltstrich des volumens*}
		IF (i=nVolumes-1) THEN BEGIN			
		moveto(objectX2,objectY1-12);
		lineto(114,objectY1-12);
		END;

		
		
		{*zum nächsten papierfaltpunkt bewegen*}
		moveto(objectX2,pageFoldY);
	
END;

END;

BEGIN

	

	

	

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

		{*Tiefe des Körpers berechnen, steigt von volume zu volume*}
		depth:=height;

		{*Wenn gewünscht, dann höhe zufällig berechnen*}

		{*yWerte für die Linien berechnen*}
		objectY1:=pageFoldY - height;
		objectY3:=pageFoldY + 6+(nVolumes-i-1)*(-i/2)+40;
		objectY2:=pageFoldY + 6+(nVolumes-i-1)*(-i/2)-height+40;
		
		{*papier faltkanten zeichnen
		penFore(65535,0,0);		
		lineTo(objectX1,pageFoldY);*}

		{*schnittkanten zeichnen*}
		penFore(0,0,65535);
		moveto(objectX1,objectY2);
		lineto(objectX1,objectY3);
		moveto(objectX2,objectY2);
		lineto(objectX2,objectY3);
        
		IF (i=0) THEN BEGIN
			moveto(objectX1,pageFoldY);
			lineto(objectX1,objectY3);
		END;

		IF (i=nVolumes-1) THEN BEGIN
			moveto(objectX2,objectY1-12);
			lineto(objectX2,objectY3);
		END;

		{*volumen faltkanten zeichnen*}
		penFore(65535,0,0);
		moveto(objectX1,objectY3);
		lineto(objectX2,objectY3);
		moveto(objectX1,objectY2);
		lineto(objectX2,objectY2);
		
		{*unterster faltstrich des volumens*}
		IF (i=nVolumes-1) THEN BEGIN			
		moveto(objectX2,objectY1-12);
		lineto(114,objectY1-12);
		END;

		
		
		{*zum nächsten papierfaltpunkt bewegen
		moveto(objectX2,pageFoldY);
		lineto(pageWidth,pageFoldY);*}

END;
	
		{*letzten papierfaltpunkt zeichen*}
		moveto(pageWidth-30,pageFoldY);
		lineTo(pageWidth,pageFoldY);
		
END;

END;

RUN(faltkarte);