esercizi di grafica con turbo pascal 1.1 su mac

 

Program disegna;
{ schema per disegnare con TURBO PASCAL 1.1 }
{ richiamare da disco e poi cambiare nome per nuovo programma }
{ cancellabile procedure DISEGNA }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
      
procedure disegna;
var x,y:integer;
 begin
  setrect(vertici,50,50,200,200);
  framerect(vertici);
  end; 
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere }
   disegna;
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.

 


Program gra1;
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
      
procedure retta(x,y:integer); { disegna segmento }
 begin
   move(20,20);
   lineto(20+x,20+y);
  end; 
 
procedure linea(x,y:integer); { disegna linea }
begin
 move(20,20);
 line(x,y);
end;  
procedure rettangolo(x1,y1,x2,y2:integer); { disegna rettangolo}
 begin
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  end;
procedure quadropieno(x1,y1,x2,y2:integer); {pieno}
  begin
    setrect(vertici,x1,y1,x2,y2);
    paintrect(vertici);
  end;
procedure quadrocolorato(x1,y1,x2,y2:integer); {colorato}
  begin
    setrect(vertici,x1,y1,x2,y2);
    fillrect(vertici,gray);
   end;
procedure penna1;
 begin
  pensize(2,4);
  setrect(vertici,200,200,250,250);
  framerect(vertici);
  end;
  
  procedure penna2;
 begin
  pensize(10,5);
  penpat(dkgray);
  setrect(vertici,260,200,300,250);
  framerect(vertici);
  end;
  
  procedure penna3;
 begin
  penpat(gray);
  setrect(vertici,310,200,350,250);
  framerect(vertici);
  end;
            
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   retta(200,0);
   linea(100,50);
   rettangolo(30,30,120,80);
   quadropieno(160,30,220,80);
   quadrocolorato(160,90,220,150);
   penna1;penna2;penna3;
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.

Program gra2;
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
        
procedure retta(x,y:integer); { disegna segmento }
 begin
   pensize(10,10);
   penpat(gray);
   move(20,20);
   lineto(20+x,20+y);
  end; 
 
procedure linea(x,y:integer); { disegna linea }
begin
 pensize(5,10);
 penpat(dkgray);
 move(20,20);
 line(x,y);
end;  
procedure rettangolo(x1,y1,x2,y2:integer); { disegna rettangolo}
 begin
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  eraserect(vertici); { cancella rettangolo }
  end;
  
  procedure rettangolo1(x1,y1,x2,y2:integer); { disegna rettangolo}
 begin
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  offsetrect(vertici,60,10); {protegge da cancellazione }
  eraserect(vertici); 
  end;
procedure quadropieno(x1,y1,x2,y2:integer); {pieno}
  begin
    pensize(5,5);
    setrect(vertici,x1,y1,x2,y2);
    paintrect(vertici);
  end;
procedure quadrocolorato(x1,y1,x2,y2:integer); {colorato}
  begin
    setrect(vertici,x1,y1,x2,y2);
    fillrect(vertici,gray);
   end;
procedure penna1;
 begin
  pensize(2,4);
  setrect(vertici,200,200,250,250);
  framerect(vertici);
  end;
  
  procedure penna2;
 begin
  pensize(10,5);
  penpat(dkgray);
  setrect(vertici,260,200,300,250);
  framerect(vertici);
  end;
  
  procedure penna3;
 begin
  pennormal;
  penpat(gray);
  setrect(vertici,310,200,350,250);
  framerect(vertici);
  end;
            
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   retta(200,0);
   linea(100,50);
   rettangolo(10,250,400,280);
   rettangolo1(10,290,400,320);
   quadropieno(160,30,220,80);
   quadrocolorato(160,90,220,150);
   penna1;penna2;penna3;
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.

Program gra3;
{ esempio per figure geometriche piane }
{ SETRECT..FRAMERECT..ERASERECT..OFFSETRECT...PAINTRECT...PENSIZE.PENNORMAL}
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
      
procedure rettangolo;
  begin
    setrect(vertici,20,20,100,100);
    framerect(vertici);
    pensize(3,3);
    setrect(vertici,110,20,200,100);
    framerect(vertici);
    setrect(vertici,210,20,300,100);
    paintrect(vertici);
    setrect(vertici,310,20,360,100);
    fillrect(vertici,gray);
  end;  
procedure rettangolo1;
  begin
    setrect(vertici,20,120,100,200);
    framerect(vertici);
    offsetrect(vertici,20,20);
    pensize(3,3);
    eraserect(vertici);
    {cancellazione parziale limitata da offsetrect }
    framerect(vertici);
    { duplicazione rettangolo spostato }
    offsetrect(vertici,20,20);
    paintrect(vertici);
    
    offsetrect(vertici,20,20);
    pennormal;
    fillrect(vertici,gray);
    
    framerect(vertici);
    offsetrect(vertici,20,20);
    
    pensize(5,5);
    paintrect(vertici);
    offsetrect(vertici,30,30);
    
    setrect(vertici,310,230,360,300);
    fillrect(vertici,gray);
  end;  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);      
   rettangolo;
   rettangolo1;
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.

Program gra4;
{ esempio per figure geometriche piane }
{ SETRECT..FRAMEROUNDRECT..ERASEROUNDRECT..OFFSETRECT..}
{...PENSIZE.PENNORMAL..PAINTROUNDRECT}
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
      
procedure rettangolo;
  begin
    setrect(vertici,20,20,100,100);
    framerect(vertici);
    pensize(3,3);
    setrect(vertici,110,20,200,100);
    framerect(vertici);
    setrect(vertici,210,20,300,100);
    paintrect(vertici);
    setrect(vertici,310,20,360,100);
    fillrect(vertici,gray);
  end;  
procedure rettangolo1; { arrotondamento vertici }
  begin
    setrect(vertici,20,120,100,200);
    frameroundrect(vertici,30,30);
    offsetrect(vertici,20,20);
    pensize(3,3);
    eraseroundrect(vertici,30,30);
    {cancellazione parziale limitata da offsetrect }
    frameroundrect(vertici,30,30);
    { duplicazione rettangolo spostato }
    offsetrect(vertici,20,20);
    paintroundrect(vertici,40,40);    
    offsetrect(vertici,20,20);    
    fillrect(vertici,gray);    
    framerect(vertici);
    offsetrect(vertici,20,20);    
    pensize(5,5);
    paintrect(vertici);
    offsetrect(vertici,30,30);    
    setrect(vertici,310,230,360,300);
    fillrect(vertici,gray);
  end;  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);      
   rettangolo;
   rettangolo1;
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.