PROGRAM ZOOMS (INPUT,OUTPUT,GRAPHIC); (* 12.10.1986 FLORIAN MATTHES *) (* DIESES PROGRAMM IST NUR ZUR DEMONSTRATION DER GRAFIK *) (* IM MEHRFARBENMODUS AUF DER DISKETTE VORHANDEN *) CONST XMAX = 159; YMAX = 199; TYPE POINT = RECORD X,Y : INTEGER; END; VAR A,B,C,D: POINT; FARBE : 0..3; WINKEL : INTEGER; PROCEDURE GETPOINT(VAR P:POINT); BEGIN P.X:= INT(XMAX * RANDOM(0)); P.Y:= INT(YMAX * RANDOM(0)); END; (* GETPOINT *) PROCEDURE ZOOM(COLOR: INTEGER; P1,P2,P3,P4:POINT); (* MUTIERE QUADRAT P1/P2 ZU P3/P4 *) VAR C: 0..1; PROCEDURE GROW(VAR FROM:INTEGER; UPTO:INTEGER); BEGIN IF FROMUPTO THEN FROM:=FROM-1; END; (* GROW *) BEGIN C:=COLOR; REPEAT BOX(C,P1.X,P1.Y,P2.X,P2.Y,WINKEL); GROW(P1.X,P3.X); GROW(P1.Y,P3.Y); GROW(P2.X,P4.X); GROW(P2.Y,P4.Y); C:= COLOR - C; UNTIL (P1.X=P3.X) OR (P1.Y=P3.Y); END; (* ZOOM *) BEGIN COLOR(0,1); COLOR(1,2); COLOR(2,3); COLOR(3,6); COLOR(4,1); COLOR(5,5); WRITE("DREHWINKEL? (0-360) :0", #157); READLN(WINKEL); GRAPHIC(3,1); FARBE:=1; WHILE NOT KEYPRESSED DO BEGIN GETPOINT(A); GETPOINT(B); GETPOINT(C); GETPOINT(D); ZOOM(FARBE,A,B,C,D); IF FARBE=3 THEN FARBE:=1 ELSE FARBE:= FARBE+1; END; GRAPHIC(0,1); END.