prolo5y

 


/* ellisse1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna ellisse verticale con Line  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
  fine    
Goal 
  graphics(1,7,1),attribute(2),
  /* prova 1,2,3,4,5 per primo parametro */
  
  write("\t\tEllisse verticale\n\n"),
  assi,
  disegna(16000,1000,360),
  fine.
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=16000,RV2=30000,CV2=16000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,
  R=16000,
  C=16000,
  Scalax=9000,Scalay=5000,
  Seno=R+round(Scalax*sin(N*3.14/180)),
  Coseno=R+round(Scalay*cos(N*3.14/180)),
  line(R,C,Seno,Coseno,Colore1),
  N2=N-1,
  disegna(Riga1,Colonna1,N2).
  disegna(_,_,_).
  fine:- sound(100,500),
  cursor(19,2).


/* ellisse2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna ellisse orizzontale con Line  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
  fine    
Goal 
  graphics(1,7,1),attribute(2),
  /* prova 1,2,3,4,5 per primo parametro */
  
  write("\tEllisse orizzontale\n\n"),
  assi,
  disegna(16000,1000,360),
  fine.
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=16000,RV2=30000,CV2=16000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,
  R=16000,
  C=16000,
  Scalax=5000,Scalay=9000,
  Seno=R+round(Scalax*sin(N*3.14/180)),
  Coseno=R+round(Scalay*cos(N*3.14/180)),
  line(R,C,Seno,Coseno,Colore1),
  N2=N-1,
  disegna(Riga1,Colonna1,N2).
  disegna(_,_,_).
  fine:- sound(100,500),
  cursor(19,2).

/* grafi1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna linee varie */
/* formattazione testo con t\t....\n\n */
domains
 intero = integer
Predicates
  crealinea
  cornice(Intero,Intero,Intero)
  /*  posizione inizio linee,numero righe */
Goal 
  graphics(1,7,1),attribute(1),crealinea.
Clauses
  crealinea :- cursor(0,0), write("\t\tPROVA RIGHE\n\n"),
  	      cornice(1000,1000,75).  	      
  
  cornice(Riga1,Colo1,N) :-
  	      N>0,!,  /* esegue per N>n.righe*/
              Colon2=Colo1+400, N2=N-1,
              line(Riga1,Colo1,30000,30000,N),
              Riga2=32000-Riga1,
              Colo2=32000-Colo1,
              line(Riga2,Colo1,Riga1,Colo2,N),
              cornice(Riga1,Colon2,N2).
  cornice(_,_,0).

/* grafi2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna linee varie */
/* formattazione testo con t\t....\n\n */
domains
 intero = integer
Predicates
  crealinea
  cornice(Intero,Intero,Intero)
  /*  posizione inizio linee,numero righe */
Goal 
  graphics(1,7,1),attribute(1),crealinea.
Clauses
  crealinea :- cursor(0,0), write("\t\t\tPROVA RIGHE\n\n\n"),
  	      cornice(1000,1000,75).  	      
  /* t ...tabulazione....n interlinea...*/
    
  cornice(Riga1,Colo1,N) :-
  	      N>0,!,  /* esegue per N>n.righe*/
              Colon2=Colo1+400, N2=N-1,
              line(Riga1,Colo1,30000,30000,N),
              Riga2=32000-Riga1,
              Colo2=32000-Colo1,
              line(Riga2,Colo1,Riga1,Colo2,N),
              cornice(Riga1,Colon2,N2).
  cornice(_,_,0).

/* grafi3.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna linee parallele */
/* formattazione testo con t\t....\n\n */
domains
 intero = integer
 X= integer
 Y = integer
Predicates
  crealinea
  cornice(Intero,Intero,Intero)
  /*  posizione inizio linee,numero righe */
Goal 
  graphics(1,7,1),attribute(3),crealinea.
Clauses
  crealinea :- cursor(0,0), write("\n\n\t\t\tPROVA RIGHE\n\n\n"),
  	      cornice(1000,1000,50).  	      
  /* t ...tabulazione....n interlinea...*/
    
  cornice(Riga1,Colo1,N) :-
  	      N>0,!,  /* esegue per N>n.righe*/
  	      X=1000,Y=20000,
              line(Riga1,X,Riga1,Y,N),
              line(X,Colo1,Y,Colo1,N),
              Riga2=Riga1+400,
              Colo2=Colo1+400,
              N2=N-1, /* decremento contatore*/
                      /* passo 1 */
              cornice(Riga2,Colo2,N2).
  cornice(_,_,0):-sound(100,500),
  cursor(18,2).
  


/* grafi4.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* attivazione grafica con TURTLE */
domains
  intero= integer
  angolo= integer
Predicates
  disegna(Intero,Intero,Intero,intero)
  /*  inizio linee,numero disegni,angolo */
Goal 
  graphics(1,7,1),attribute(1),
  disegna(100,100,1000,10).
Clauses
  disegna(Riga1,Colonna1,Contatore,Angolo) :-
     Contatore>0,!,
     pendown,
     penpos(Riga1,Colonna1,Angolo),
     pencolor(5),
     right(Angolo),
     forward(500),
     Colonna2=Colonna1+20,
     Riga2=Riga1+20,
     Angolo2=Angolo+20,
     Contatore2=Contatore-1,
     disegna(Riga2,Colonna2,Contatore2,Angolo2).
  Disegna(_,_,0,0) :-sound(100,500),cursor(18,2).