menu1


/* menu1.pro */
/* attivazione menu vari richiamantisi*/
/* osserva vari modi di inserimento opzioni */
nowarnings
include "menu.pro"
/* assegnare coordinate angolo alto sinistra*/
/* per finestra menu Riga Colonna */
/* e lista opzioni con formato variabile */
/* menu(integer,integer,lista opzioni,integer)*/
/* menu(4,4,["opzione1","opzione2"],SCELTA). */
predicates
azione1
azione2
azione3
finestra
elabora1(integer)
elabora2(integer)
elabora3(integer)
scelta3(integer)
termine3(integer)
scelta(integer)
scelta2(integer)
termine1(integer)
termine2(integer)
fine
goal finestra,azione3.
clauses
finestra:-
makewindow(1,5,1,"",1,1,20,70).
azione3:-
menu(10,40,["azione1","azione2","fine"],Scelta3),
elabora3(Scelta3),
termine3(Scelta3),!.	
elabora3(0).
elabora3(1):-scelta3(1).
elabora3(2):-scelta3(2).
elabora3(3):-scelta3(3).
termine3(3).
termine3(0).
scelta3(1):-azione1.
scelta3(2):-azione2.
scelta3(3):-fine.
azione1:-
 menu(2,30,[opzione_1,opzione_2,menu_p],Scelta),
      elabora1(Scelta),
      termine1(Scelta),!.
elabora1(0).
elabora1(1):-scelta(1).                            
elabora1(2):-scelta(2).
elabora1(3):-scelta(3).
termine1(3).
termine1(0).
scelta(1):-write("scelta1\n"),beep,azione1.
scelta(2):-write("scelta2\n"),beep,azione1.
scelta(3):-write("fine\n"),sound(100,770),
azione3.
azione2:-
menu(5,50,["opzione 1","opzione 2","opzione 3",
"opzione 4","fine:menu p"],Scelta2),
elabora2(Scelta2),
termine2(Scelta2),!.
elabora2(0).
elabora2(1):-scelta2(1).
elabora2(2):-scelta2(2). 
elabora2(3):-scelta2(3).
elabora2(4):-scelta2(4).
elabora2(5):-scelta2(5).
termine2(5).
termine2(0).
scelta2(1):-write("1 chiamata\n "),sound(100,550),azione2.
scelta2(2):-write("2 chiamata\n"),sound(100,800),azione2.
scelta2(3):-write("3 chiamata\n"),beep,beep,azione2.
scelta2(4):-write("4 chiamata\n"),beep,azione2.
scelta2(5):-write("5 chiamata:fine\n"),azione3.
fine:-write("fine prova "),sound(100,660).