PROCEDURE ZeichneAlles; VAR StartX:REAL; StartY:REAL; BreiteL:REAL; BreiteSeite:REAL; X:REAL; Y:REAL; Z:REAL; PROCEDURE ZeichneT(StartX:REAL; StartY:REAL; Breite:REAL); VAR X:REAL; Y:REAL; BEGIN X := StartX; Y := StartY; MoveTo(X, Y); X := X + (3 * Breite); Y := Y; LineTo(X, Y); MoveTo(StartX, StartY); LineTo(StartX, StartY - Breite); MoveTo(X, Y); LineTo(X, Y - Breite); X := StartX; Y := Y - Breite; MoveTo(X, Y); X := X + (3 * Breite); Y := Y; LineTo(X, Y); MoveTo(X, Y); X := X; Y := Y - Breite; LineTo(X, Y); MoveTo(X, Y); X := X - Breite; Y := Y; LineTo(X, Y); MoveTo(X, Y); X := X; Y := Breite * -1; LineTo(X, Y); MoveTo(X, Y); X := X - Breite; Y := Y; LineTo(X, Y); MoveTo(X, Y); X := X; Y := StartY - (2 * Breite); LineTo(X, Y); MoveTo(X, Y); X := X - Breite; Y := Y; LineTo(X, Y); MoveTo(X, Y); X := StartX; Y := StartY; LineTo(X, Y); END; PROCEDURE ZeichneL(StartX:REAL; StartY:REAL; Breite:REAL; Hoehe:REAL; IstRechts:INTEGER; IstOben:INTEGER); VAR X:REAL; Y:REAL; BEGIN X := StartX; Y := StartY; MoveTo(X, Y); X := X; Y := Y + (Hoehe * IstOben); LineTo(X, Y); MoveTo(X, Y); X := X + (2 * Breite * IstRechts); Y := Y; LineTo(X, Y); MoveTo(X, Y); X := X; Y := Y + (Breite * IstOben * -1); LineTo(X, Y); MoveTo(X, Y); X := X + (Breite * IstRechts * -1); Y := Y; LineTo(X, Y); MoveTo(X, Y); X := X; Y := StartY; LineTo(X, Y); MoveTo(X, Y); X := StartX; Y := StartY; LineTo(X, Y); END; BEGIN StartX := PX_START; StartY := PY_START; BreiteL := 1; BreiteSeite := PBREITE_SEITE; Z := 2; X := StartX - ((BreiteL / 2) + (BreiteL * 2)); Y := StartY - BreiteL; WHILE (Abs(X) <= (BreiteSeite / 2)) DO BEGIN ZeichneL(X, Y, BreiteL, Z, 1, -1); ZeichneL(X *-1, Y, BreiteL, Z, -1, -1); ZeichneL(X + 2 BreiteL, -Z, BreiteL, Y, -1, 1); ZeichneL((X + 2 BreiteL) * -1, -Z, BreiteL, Y, 1, 1); Z := Z + BreiteL; X := X - BreiteL; Y := Y - BreiteL; END; ZeichneT(StartX - ((BreiteL / 2) + BreiteL), StartY, BreiteL); END; Run(ZeichneAlles);