esercizi di grafica con turbo pascal 1.1 su mac
Program mobili1; { FIGURE MOBILI in pagina grafica }
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; sagoma: EventRecord; vertici:rect; colore,figure,seno,coseno,conta,angolo:integer; t:real;
procedure richiesta; begin writeln('indica numero figure 1..5..10 '); readln(figure); end;
procedure grafica; BEGIN {inizializzazione sottoprogrammi o routine} InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort);
{inizio programma principale} PenPat(BLACK); BackPat(WHITE); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
procedure disegna; begin for conta:=1 to figure do begin t:=round(arctan(1)*4)/(50+25*conta); begin for angolo:=1 to 400 do begin seno:=round(sin(angolo*t)*95)+95; coseno:=round(cos(angolo*t)*95)+95; moveto(angolo+50,seno); lineto(400-angolo,coseno); end; end; end; end;
PROCEDURE fine; begin sysbeep(1); moveto(10,300); drawstring('premi return per finire'); readln; end;
begin richiesta; grafica; disegna; fine; end.
Program mobili2; { FIGURE MOBILI in pagina grafica }
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; sagoma: EventRecord; vertici:rect; figure,seno,coseno,conta,angolo:integer; t:real;
procedure richiesta; begin writeln('indica numero figure 1..5..10 '); readln(figure); end;
procedure grafica; BEGIN {inizializzazione sottoprogrammi o routine} InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort); PenPat(BLACK); BackPat(WHITE); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
PROCEDURE cancella; begin MOVETO(10,20); sysbeep(1); drawstring('premi return'); readln; EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
procedure disegna(colore,VOLTE:integer); begin { MODIFICABILI....X,Y,VOLTE } case colore of 1:penpat(black); 2:penpat(dkgray); 3:penpat(gray); end; for conta:=1 to figure do begin t:=round(arctan(1)*4)/(50+25*conta); begin for angolo:=1 to volte do begin seno:=round(sin(angolo*t)*95)+200; coseno:=round(cos(angolo*t)*95)+200; moveto(angolo+100,seno); lineto(380-angolo,coseno); end; end; end; end;
PROCEDURE fine; begin moveto(10,30); drawstring('premi return per finire'); readln; end;
begin richiesta; grafica; disegna(1,400);cancella; disegna(2,300);cancella; disegna(3,200);cancella; fine; end.
Program mobili3; { FIGURE MOBILI in pagina grafica }
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; sagoma: EventRecord; vertici,QUADRO,QUADRO1:rect; figure,seno,coseno,conta,angolo:integer; t:real;
procedure richiesta; begin writeln('indica numero figure 1..5..10 '); readln(figure); end;
procedure grafica; BEGIN {inizializzazione sottoprogrammi o routine} InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort); PenPat(BLACK); BackPat(WHITE); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
PROCEDURE cancella; begin MOVETO(10,20); sysbeep(1); drawstring('premi return'); readln; EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
procedure disegna(colore,A,B,VOLTE:integer); VAR X,Y:INTEGER; begin { MODIFICABILI....X,Y,VOLTE } X:=A; Y:=B; case colore of 1:penpat(black); 2:penpat(dkgray); 3:penpat(gray); end; for conta:=1 to figure do begin t:=round(SIN(1)*5)/(30+25*conta); begin for angolo:=1 to volte do begin seno:=round(sin(angolo*t)*95)+Y; coseno:=round(cos(angolo*t)*95)+Y; setrect(quadro,angolo+X,seno,angolo+X+20,seno+20); frameoval(quadro); SETRECT(quadro1,ANGOLO+X,COSENO,X+20+angolo,COSENO+20); framerect(quadro1); moveto(angolo+X,seno); lineto(380-angolo,coseno); end; end; end; end;
PROCEDURE fine; begin moveto(10,30); drawstring('premi return per finire'); readln; end;
begin richiesta; grafica; disegna(1,100,100,400);cancella; disegna(2,100,150,300);cancella; disegna(3,100,200,200);cancella; fine; end.
Program MUOVE1; { FIGURE MOBILI in pagina grafica }
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; A,B:INTEGER; seno,coseno:integer;
procedure grafica; BEGIN {inizializzazione sottoprogrammi o routine} InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort); PenPat(BLACK); BackPat(WHITE); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
PROCEDURE cancella; begin MOVETO(10,20); sysbeep(1); drawstring('premi return'); readln; EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
PROCEDURE fine; begin moveto(10,30); drawstring('premi return per finire'); readln; end;
procedure disegna(angolo,k:integer); { provare con modulo=0...1...-1 } var h,modulo:integer; begin b:=100; modulo:=0; for a:=1 to angolo do begin seno:=trunc(50*sin(a*3.14/180)); coseno:=trunc(150*cos(a*3.14/180)); moveto(b+a,200-h); lineto(b+a+seno,200+coseno); a:=a+k; h:=h+modulo; end; end;
begin grafica; disegna(120,2);cancella; disegna(180,1);cancella; disegna(90,2);cancella; disegna(90,1);cancella; disegna(75,4);cancella; fine; end.
Program MUOVE2; { FIGURE MOBILI in pagina grafica }
USES Memtypes,QuickDraw,OSIntf,ToolIntf;
VAR gPort: GrafPort; A,B,volte,q:INTEGER; seno,coseno:integer; quadro:rect;
procedure richiesta; begin writeln('indica numero animazioni 1.2.5..='); readln(volte); end;
procedure grafica; BEGIN {inizializzazione sottoprogrammi o routine} InitGraf(@thePort); initfonts; InitCursor; HideCursor; OpenPort(@gPort); PenPat(BLACK); BackPat(WHITE); EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
PROCEDURE cancella; begin EraseRect(gPort.portRect); FrameRect(gPort.portRect); end;
procedure pausa(durata:integer); var tempo:integer; begin for tempo:=1 to durata do begin moveto(10,10); drawstring(''); end; end;
PROCEDURE fine; begin moveto(10,30); drawstring('premi return per finire'); readln; end;
procedure disegna1; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; for a:=1 to 180 do begin seno:=trunc((k+10)*sin(a*3.14/180)); coseno:=trunc((h+10)*cos(a*3.14/180)); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); frameOVAL(quadro); pausa(100); a:=a+1; h:=h+1; k:=k+1; end; end;
procedure disegna2; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; PENPAT(gray); for a:=1 to 180 do begin seno:=trunc((k+10)*sin(a*3.14/180)); coseno:=trunc((h+10)*cos(a*3.14/180)); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); PAINTRECT(quadro); pausa(200); a:=a+1; h:=h+1; k:=k+1; end; end;
procedure disegna3; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; penpat(dkgray); for a:=1 to 180 do begin seno:=trunc((k+10)*sin(a*3.14/180)); coseno:=trunc((h+10)*cos(a*3.14/180)); setrect(quadro,b+A+seno,50+h+SENO,b+A+SENO+k+40,50+SENO+h+40); paintoval(quadro); pausa(300); a:=a+1; h:=h+1; k:=k+1; end; end;
procedure disegna4; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; for a:=1 to 180 do begin seno:=trunc((k+10)*sin(a*3.14/180)); coseno:=trunc((h+10)*cos(a*3.14/180)); penpat(black); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); framerect(quadro); penpat(gray); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); frameoval(quadro); pausa(400); a:=a+1; h:=h+1; k:=k+1; end; end;
procedure disegna5; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; for a:=1 to 180 do begin seno:=trunc((k+10)*sin(a*3.14/180)); coseno:=trunc((h+10)*cos(a*3.14/180)); penpat(dkgray); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); framerect(quadro); penpat(black); setrect(quadro,b+A+COSENO,50+h+SENO,b+A+COSENO+k+40,50+SENO+h+40); paintoval(quadro); pausa(500); a:=a+1; h:=h+1; k:=k+1; end; end;
procedure disegna6; var b,h,k,a:integer; begin b:=1; k:=0; h:=0; for a:=1 to 180 do begin seno:=trunc((k+1)*sin(a*3.14/180)); coseno:=trunc((h+1)*cos(a*3.14/180)); penpat(dkgray); setrect(quadro,b+A+seno,50+h+coseno,b+A+SENO+k+40,50+coseno+h+40); framerect(quadro); penpat(black); setrect(quadro,b+A+COSENO,50+h+SENO,b+A+COSENO+k+40,50+SENO+h+40); paintoval(quadro); pausa(500); ERASERECT(quadro); a:=a+1; h:=h+1; k:=k+1; end; end;
begin richiesta; grafica; FOR Q:=1 TO VOLTE DO BEGIN disegna1;cancella; disegna2;cancella; disegna3;cancella; disegna4;cancella; disegna5;cancella; disegna6;cancella; END;
fine; end.