esercizi di grafica con turbo pascal 1.1 su mac

 

 

Program SFONDI4;
{ ESEMPI DI tratteggi da usare per riempire figure con FILL..}
{ vari modi di assegnare valori ai tratteggi e alla procedura }
{$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;  
      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'); 
     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; 
 begin
    setrect(vertici,10,10,100,100);
    framerect(vertici);
    
    pensize(15,15);    
    setrect(vertici,120,10,200,100);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,10,300,100);
    paintrect(vertici);
    
    setrect(vertici,320,10,400,100);
    fillrect(vertici,sfondo1);
    
    { seconda serie}
    setrect(vertici,10,120,100,200);
    framerect(vertici);
    
    stuffhex(@sfondo1,'123321123321123321');
     pensize(15,15);    
    setrect(vertici,120,120,200,200);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,120,300,200);
    paintrect(vertici);
    
    setrect(vertici,320,120,400,200);
    fillrect(vertici,sfondo1);
     
  { terza serie }       
    setrect(vertici,10,220,100,300);
    fillrect(vertici,sfondo[0]);
     setrect(vertici,120,220,200,300);
    fillrect(vertici,sfondo[1]);
   setrect(vertici,220,220,300,300);
    fillrect(vertici,sfondo[2]);
   setrect(vertici,320,220,400,300);
    fillrect(vertici,sfondo[3]);
  
    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 } 
   stuffhex(@sfondo1,'111222333444555666');     
   disegna1;     
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.
 

 

Program SFONDI5;
{ ESEMPI DI tratteggi da usare per riempire figure con FILL..}
{ vari modi di assegnare valori ai tratteggi e alla procedura }
{ inserimento pausa sonora }
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
            
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..5] of pattern;
      x1,y1,x2,y2,contasfondo,a:integer;  
      sfondo1:pattern; 
  
  procedure suona(durata:integer;testo:string);
  begin
   for a:=1 to durata do
   begin
   sysbeep(5);
   textfont(0);
   moveto(10,360);
   drawstring(testo);
   end;
   hidepen;
   moveto(10,340);
   pensize(40,40);
   showpen;
   penpat(white);
   lineto(200,340);  
   penpat(black); 
  end;
         
  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 disegna1; 
 begin
    suona(10,'prima serie   ');
    setrect(vertici,10,10,100,100);
    framerect(vertici);
    
    pensize(15,15);    
    setrect(vertici,120,10,200,100);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,10,300,100);
    paintrect(vertici);
    
    setrect(vertici,320,10,400,100);
    fillrect(vertici,sfondo1);
    
    suona(10,'seconda serie     ');
    { seconda serie}
    setrect(vertici,10,120,100,200);
    framerect(vertici);
    
    stuffhex(@sfondo1,'123321123321123321');
     pensize(15,15);    
    setrect(vertici,120,120,200,200);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,120,300,200);
    paintrect(vertici);
    
    penpat(dkgray);
    backpat(black);
    setrect(vertici,230,120,300,200);
    fillrect(vertici,sfondo1);
   
   suona(20,'terza  serie  ');
   
  { terza serie }       
    setrect(vertici,10,220,100,300);
    fillrect(vertici,sfondo[0]);
     setrect(vertici,120,220,200,300);
    fillrect(vertici,sfondo[1]);
   setrect(vertici,220,220,300,300);
    fillrect(vertici,sfondo[2]);
   setrect(vertici,320,220,400,300);
    fillrect(vertici,sfondo[3]);
  suona(10,'fine esempio        ');
    end; 
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(black);
   BackPat(white);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere } 
   stuffhex(@sfondo1,'111222333444555666');     
   disegna1;     
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.
 

Program SFONDI6;
{ ESEMPI DI tratteggi da usare per riempire figure con FILL..}
{ vari modi di assegnare valori ai tratteggi e alla procedura }
{ inserimento pausa sonora  e stili e FONT  dimensioni variabili}
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
            
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..5] of pattern;
      x1,y1,x2,y2,contasfondo,a:integer;  
      sfondo1:pattern; 
  
  procedure suona(n,durata:integer;testo:string;caratteri:integer);
                                
  begin
   for a:=1 to durata do
   begin
   sysbeep(1);
   textfont(caratteri);
   textsize(n);
   moveto(10,360);
   drawstring(testo);
   end;
   hidepen;
   moveto(10,340);
   pensize(40,40);
   showpen;
   penpat(white);
   lineto(400,340);  
   penpat(black); 
  end;
         
  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 disegna1; 
 begin
    textface([bold]);
    suona(12,5,'prima serie   ',0);
    pensize(1,1);
    setrect(vertici,10,10,100,100);
    framerect(vertici);
    
    pensize(15,15);    
    setrect(vertici,120,10,200,100);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,10,300,100);
    paintrect(vertici);
    
    setrect(vertici,320,10,400,100);
    fillrect(vertici,sfondo1);
    
    textface([underline]);
    suona(14,10,'seconda serie     ',4);
    { seconda serie}
    setrect(vertici,10,120,100,200);
    framerect(vertici);
    
    pensize(15,15);
    stuffhex(@sfondo1,'123321123321123321'); 
    setrect(vertici,120,120,200,200);
    framerect(vertici);
    
    pensize(1,1);
    setrect(vertici,230,120,300,200);
    paintrect(vertici);
    
    setrect(vertici,230,120,300,200);
    fillrect(vertici,sfondo1);
   
   textface([shadow]);
   suona(18,10,'terza  serie  ',2);
   
  { terza serie }       
    setrect(vertici,10,220,100,300);
    fillrect(vertici,sfondo[0]);
     setrect(vertici,120,220,200,300);
    fillrect(vertici,sfondo[1]);
   setrect(vertici,220,220,300,300);
    fillrect(vertici,sfondo[2]);
   setrect(vertici,320,220,400,300);
    fillrect(vertici,sfondo[3]);
    textface([outline]);
  suona(24,20,'fine esempio :premi return       ',9);
    end; 
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(black);
   BackPat(white);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere } 
   stuffhex(@sfondo1,'111222333444555666');     
   disegna1;     
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.
 

Program SFONDI7;
{ ESEMPI DI tratteggi da usare per riempire figure con FILL..}
{ vari modi di assegnare valori ai tratteggi e alla procedura }
{ inserimento pausa sonora  e stili e FONT  dimensioni variabili}
{$U-}
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
            
   VAR
      gPort:   GrafPort;      
      sagoma: EventRecord;
      vertici:rect;                    
      sfondo:array[0..5] of pattern;
      x1,y1,x2,y2,contasfondo,a:integer;  
      sfondo1:pattern; 
  
  procedure suona(n,durata:integer;testo:string;caratteri:integer);
                                
  begin
   for a:=1 to durata do
   begin
   sysbeep(1);
   textfont(caratteri);
   textsize(n);
   moveto(10,360);
   drawstring(testo);
   end;  
   moveto(10,340);
   pensize(40,40);   
   penpat(white);
   lineto(400,340);  
   penpat(black); 
  end;
         
  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 disegna1; 
 begin
    textface([bold]);
    suona(12,5,'prima serie   ',0);
    pensize(1,1);
    setrect(vertici,10,10,100,100);
    frameoval(vertici);
    
    pensize(15,15);    
    setrect(vertici,120,10,200,100);
    frameoval(vertici);
    
    pensize(1,1);
    setrect(vertici,230,10,300,100);
    paintoval(vertici);
    
    setrect(vertici,320,10,400,100);
    filloval(vertici,sfondo1);
    
    textface([underline]);
    suona(14,10,'seconda serie     ',4);
    { seconda serie}
    setrect(vertici,10,120,100,200);
    frameoval(vertici);
    
    pensize(15,15);
    stuffhex(@sfondo1,'123321123321123321'); 
    setrect(vertici,120,120,200,200);
    frameoval(vertici);
    
    pensize(1,1);
    setrect(vertici,230,120,300,200);
    paintoval(vertici);
    
    setrect(vertici,230,120,300,200);
    filloval(vertici,sfondo1);
   
   textface([shadow]);
   suona(18,10,'terza  serie  ',2);
   
  { terza serie }       
    setrect(vertici,10,220,100,300);
    filloval(vertici,sfondo[0]);
     setrect(vertici,120,220,200,300);
    filloval(vertici,sfondo[1]);
   setrect(vertici,220,220,300,300);
    filloval(vertici,sfondo[2]);
   setrect(vertici,320,220,400,300);
    filloval(vertici,sfondo[3]);
    textface([outline]);
  suona(24,20,'fine esempio :premi return       ',9);
    end; 
  
BEGIN
{inizializzazione sottoprogrammi o routine}
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   preparaicone;
   OpenPort(@gPort);   
   
{inizio programma principale}   
   PenPat(black);
   BackPat(white);
   EraseRect(gPort.portRect);
   framerect(gPort.portRect);
   { procedura operativa modificabile..altre procedure aggiungere } 
   stuffhex(@sfondo1,'111222333444555666');     
   disegna1;   
   moveto(10,350);
   drawstring('premi return per finire');  
   WHILE NOT OSEventAvail(mDownMask + keyDownMask, sagoma) DO;
END.