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).