esercizi di grafica con turbo pascal 1.1 su mac

 

 

Program SFONDI2;
{ ESEMPI DI sei tratteggi da usare per riempire figure o linee spesse }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   type datiicone=array[0..95] of integer;
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..5] of datiicone;
      sfondo1:pattern;  
         
  procedure preparaicone;
   begin
     stuffhex(@sfondo[0],'1234567899876543');
     stuffhex(@sfondo[1],'101010101010101010');  
     stuffhex(@sfondo[2],'1212121212121212'); 
     stuffhex(@sfondo[3],'1203450654076507');
     stuffhex(@sfondo[4],'9875679875679877');  
     stuffhex(@sfondo[5],'9871239871237654'); 
  END;
      
procedure disegna;
var x1,y1,x2,y2,a,contatore:integer;
 begin
   x1:=10;y1:=10;
   x2:=x1+50;y2:=y1+50;
   begin
   for contatore:=0 to 5 do 
    begin     
   for a:=1 to 8 do
   begin   
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  fillrect(vertici,sfondo1);
  x1:=x1+60;x2:=x1+50;
  end;
  x1:=10;y1:=y1+60;x2:=x1+50;y2:=y1+50;
  end; 
  end;
  end;
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   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 SFONDI;
{ ESEMPI DI sei tratteggi da usare per riempire figure o linee spesse }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;
      sfondo1,sfondo2,sfondo3,sfondo4,sfondo5,sfondo6:pattern;            
           
  procedure preparaicone;
   begin
    stuffhex(@sfondo1,'1234567899876543');
     stuffhex(@sfondo2,'101010101010101010');  
     stuffhex(@sfondo3,'1212121212121212'); 
     stuffhex(@sfondo4,'1203450654076507');
     stuffhex(@sfondo5,'9875679875679877');  
     stuffhex(@sfondo6,'9871239871237654'); 
  END;
      
procedure disegna(x1,y1:integer;sfondo:pattern);
var x2,y2,a:integer;
 begin
   x2:=x1+50;y2:=y1+50;
   for a:=1 to 8 do
   begin
   
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  fillrect(vertici,sfondo);
  x1:=x1+60;x2:=x1+50;
  end;
  end; 
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere }      
   disegna(10,10,sfondo1);
   disegna(10,70,sfondo2);
   disegna(10,140,sfondo3);
   disegna(10,200,sfondo4);
   disegna(10,270,sfondo5);
   disegna(10,330,sfondo6);
   
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.

Program SFONDI2;
{ ESEMPI DI sei tratteggi da usare per riempire figure o linee spesse }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
         
   
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..5] of pattern;
          
         
  procedure preparaicone;
   begin
     stuffhex(@sfondo[0],'1234567899876543');
     stuffhex(@sfondo[1],'101010101010101010');  
     stuffhex(@sfondo[2],'1212121212121212'); 
     stuffhex(@sfondo[3],'1203450654076507');
     stuffhex(@sfondo[4],'9875679875679877');  
     stuffhex(@sfondo[5],'9871239871237654'); 
  END;
      
procedure disegna;
var x1,y1,x2,y2,a,contasfondo:integer;
 begin
   x1:=10;y1:=10;
   x2:=x1+50;y2:=y1+50;
   begin
   for contasfondo:=0 to 5 do 
    begin     
   for a:=1 to 8 do
   begin   
  setrect(vertici,x1,y1,x2,y2);
  framerect(vertici);
  fillrect(vertici,sfondo[contasfondo]);
  x1:=x1+60;x2:=x1+50;
  end;
  x1:=10;y1:=y1+60;x2:=x1+50;y2:=y1+50;
  end; 
  end;
  end;
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   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 SFONDI3;
{ ESEMPI DI tratteggi da usare per riempire figure o linee spesse }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
            
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..19] of pattern;
       x1,y1,x2,y2,contasfondo,a:integer;   
         
  procedure preparaicone;
   begin
     stuffhex(@sfondo[0],'1234567899876543');
     stuffhex(@sfondo[1],'101010101010101010');  
     stuffhex(@sfondo[2],'1212121212121212'); 
     stuffhex(@sfondo[3],'1203450654076507');
     stuffhex(@sfondo[4],'9875679875679877');  
     stuffhex(@sfondo[5],'9871239871237654'); 
     stuffhex(@sfondo[6],'1345678456987687');
     stuffhex(@sfondo[7],'0365748923987456');  
     stuffhex(@sfondo[8],'1212563458709860'); 
     stuffhex(@sfondo[9],'9734562345566679');
     stuffhex(@sfondo[10],'9999999999999999');  
     stuffhex(@sfondo[11],'8888888888888888'); 
     stuffhex(@sfondo[12],'7777777777777777');
     stuffhex(@sfondo[13],'6666666666666666');  
     stuffhex(@sfondo[14],'5555555555555555'); 
     stuffhex(@sfondo[15],'4444444444444444');
     stuffhex(@sfondo[16],'3333333333333333');  
     
     stuffhex(@sfondo[17],'9871239871237654'); 
     stuffhex(@sfondo[18],'1234567899876543');
     stuffhex(@sfondo[19],'101010101010101010');      
    
  END;
      
procedure disegna1; {prima serie }
 begin
       x1:=10;y1:=10;
       x2:=x1+40;y2:=y1+50;
         for contasfondo:=0 to 9 do 
           begin     
              setrect(vertici,x1,y1,x2,y2);
              framerect(vertici);
              fillrect(vertici,sfondo[contasfondo]);
              x1:=X1+50;x2:=x1+40;y2:=y1+50;
           END;
    end;
    
  { seconda serie } 
  procedure disegna2;       
  BEGIN
    x1:=10;y1:=80;
    x2:=x1+40;y2:=y1+50;
      for contasfondo:=10 to 19 do 
        begin     
            setrect(vertici,x1,y1,x2,y2);
            framerect(vertici);
            fillrect(vertici,sfondo[contasfondo]);
            x1:=X1+50;x2:=x1+40;y2:=y1+50;
        END;
   end;  
   
   {terza serie }  
   procedure disegna3; 
  BEGIN
   x1:=10;y1:=150;
   x2:=x1+40;y2:=y1+50;
      for contasfondo:=19 to 20 do 
        begin     
          setrect(vertici,x1,y1,x2,y2);
          framerect(vertici);
          fillrect(vertici,sfondo[contasfondo]);
          x1:=X1+50;x2:=x1+40;y2:=y1+50;
       END;
  END;
 
  
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere }      
   disegna1; disegna2;disegna3;  
    
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.