view tk/tmp.out @ 10:f2aa38ce0787

add state display.
author kono
date Fri, 19 Jan 2001 23:14:00 +0900
parents 1c57a78f1d98
children
line wrap: on
line source

:-use_module(library(tcltk)).
r_0toy0(['$t'((r_0toy0(A,B),C),(tcl_command('destroy .',D,E),F),G,H)|A],['$t'(C,F,G,H)|B]).
r_1toy0(['$t'(A,B,(tcl_command(update,['$t'(A,C,D,E)|F],['$t'((r_1toy0(G,H),I),J,K,L)|G]),D),E)|F],['$t'(I,B,K,L)|H]).
toy(A,B):-
    static([green,red,move,stop,start,quit]),
    tk([name(toy)],A,C),
    r_set_value(move,0),
    r_set_value(quit,0),
    r_set_value(stop,0),
    r_set_value(start,0),
    r_set_value(red,1),
    r_set_value(green,0),
    toy_init(C,D),
    r_0toy0(D,E),
    r_1toy0(E,B).
r_0toy00(['$t'((r_0toy00(A,B),C),(tcl_command('destroy .',D,E),F),G,H)|A],['$t'(C,F,G,H)|B]).
r_1toy00(['$t'(A,B,(tcl_command(update,['$t'(A,C,D,E)|F],['$t'((r_1toy00(G,H),I),J,K,L)|G]),D),E)|F],['$t'(I,B,K,L)|H]).
toy0(A,B):-
    static([green,red,move,stop,start,quit]),
    r_set_value(move,0),
    r_set_value(quit,0),
    r_set_value(stop,0),
    r_set_value(start,0),
    r_set_value(red,1),
    r_set_value(green,0),
    toy_init(A,C),
    r_0toy00(C,D),
    r_1toy00(D,B).
r_0toy_init0(A,['$t'(B,C,D,E)|F]):-
    check_event(A,['$t'((r_0toy_init0(G,F),B),C,D,E)|G]).
toy_init(A,['$t'(B,C,D,'$c'(E,F,notEmpty))|G]):-
    r_0toy_init0(A,H),
    bounce_init(['$t'(I,J)|'$t'(K,L)],'$t'(M,N),'$t'(O,P),H,['$t'((toy1([J|L],N,P,Q,G),B),C,D,'$c'(E,F,notEmpty))|Q]).
r_0toy13(A,B,C,D,['$t'(E,F,G,H)|I]):-
    unifyNext(A,J),
    unifyNext(B,K),
    unifyNext(C,L),
    button_red(A,D,M),
    button_green(B,M,N),
    bounce(C,N,['$t'((r_0toy13(J,K,L,O,I),E),F,G,H)|O]).
toy1(A,B,C,D,E):-
    s1(D,F),
    r_0toy13(B,C,A,F,E).
r_0start0(A,A):-
    r_set_value(start,0).
r_0start0(A,A).
start(['$t'((r_0start0(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_set_value(start,1).
r_0stop0(A,A):-
    r_set_value(stop,0).
r_0stop0(A,A).
stop(['$t'((r_0stop0(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_set_value(stop,1).
quit(A,A):-
    r_set_value(quit,1).
button_red(A,B,C):-
    r_read_value(red,0),
    out(A,'""',red,B,C).
button_red(A,B,C):-
    r_read_value(red,1),
    out(A,'Red',red,B,C).
button_green(A,B,C):-
    r_read_value(green,0),
    out(A,'""',green,B,C).
button_green(A,B,C):-
    r_read_value(green,1),
    out(A,'Green',green,B,C).
size(A,B,C,D,E,E):-
    uatom(A,200),
    uatom(B,200),
    uatom(C,5),
    uatom(D,'7x14').
r_0bounce_init3(A,B,C,['$t'((r_0bounce_init3(D,E,F,G,H),I),J,K,L)|G],['$t'(I,J,K,L)|H]):-
    unifyNowNext(A,M,D),
    unifyNow(D,M),
    unifyNowNext(B,N,E),
    unifyNow(E,N),
    unifyNowNext(C,O,F),
    unifyNow(F,O).
bounce_init(A,B,C,D,E):-
    ulist(A,F,G),
    uconst(F,'.toy'),
    ulist(G,H,I),
    uconst(H,'$w.canvas0'),
    ulist(I,J,K),
    uconst(J,circle),
    ulist(K,L,M),
    uconst(L,'$w.frame1.label3'),
    ulist(M,N,O),
    unifyNext(N,P),
    unifyNow(P,Q),
    ulist(O,R,S),
    uconst(R,'$w.frame1.label2'),
    ulist(S,T,U),
    unifyNext(T,V),
    unifyNow(V,W),
    ulist(U,X,Y),
    unifyNext(X,Z),
    unifyNow(Z,A1),
    unifyAll(['$t'(B1,'$t'(C1,D1)),'$t'(-(E1),F1),'$t'(G1,H1),'$t'(I1,J1)],Y),
    uconst(B,'$w.frame1.label3'),
    uconst(C,'$w.frame1.label2'),
    size('$t'(K1,L1),'$t'(M1,N1),'$t'(O1,P1),Q1,D,R1),
    S1 is K1-2,
    T1 is M1-2,
    Q is K1/2,
    W is M1/2,
    view('$t'(K1,L1),'$t'(M1,N1),'$t'('.toy',U1),'$t'('$w.canvas0',V1),R1,W1),
    rectangle(0,0,0,'$t'(S1,X1),'$t'(T1,Y1),'$t'('$w.canvas0',V1),W1,Z1),
    circle(1,'$t'(circle,A2),'$t'(Q,B2),'$t'(W,C2),'$t'(O1,P1),'$t'('$w.canvas0',V1),Z1,D2),
    I1 is K1-10,
    G1 is M1-10,
    E1 is O1/2,
    r_0bounce_init3('$t'(I1,J1),'$t'(G1,H1),'$t'(-(E1),F1),D2,E),
    A1 is O1/2,
    C1 is O1*2.
bounce(A,B,C):-
    ulist(A,D,E),
    ulist(E,F,G),
    ulist(G,H,I),
    ulist(I,J,K),
    ulist(K,L,M),
    unifyNowNext(L,N,O),
    unifyNow(O,P),
    ulist(M,Q,R),
    ulist(R,S,T),
    unifyNowNext(S,U,V),
    unifyNow(V,W),
    ulist(T,X,Y),
    unifyNowNext(X,Z,A1),
    unifyNow(A1,B1),
    unifyAll(['$t'(C1,'$t'(D1,E1)),'$t'(F1,G1),H1,I1],Y),
    r_read_value(move,1),
    r_read_value(quit,0),
    J1 is U+C1,
    K1 is J1,
    moveto(F,H,L,S,B,L1),
    calc_xd(L,X,'$t'(B1,M1),H1,L1,N1),
    calc_yd(S,'$t'(C1,'$t'(D1,E1)),'$t'(O1,P1),'$t'(K1,Q1),'$t'(W,R1),N1,C),
    P is N+Z,
    D1 is O1+F1.
bounce(A,B,B):-
    ulist(A,C,D),
    ulist(D,E,F),
    ulist(F,G,H),
    ulist(H,I,J),
    ulist(J,K,L),
    unifyNowNext(K,M,N),
    unifyNow(N,M),
    ulist(L,O,P),
    ulist(P,Q,R),
    unifyNowNext(Q,S,T),
    unifyNow(T,S),
    ulist(R,U,V),
    unifyNowNext(U,W,X),
    unifyNow(X,W),
    unifyAll(['$t'(Y,'$t'(Y,Z)),A1,B1,C1],V),
    r_read_value(move,0),
    r_read_value(quit,0).
bounce(A,B,B):-
    ulist(A,C,D),
    r_read_value(quit,1).
calc_xd(A,B,C,D,E,E):-
    unifyNow(A,F),
    unifyNow(B,G),
    unifyNow(C,H),
    F<10,
    H is abs(G).
calc_xd(A,B,C,D,E,E):-
    unifyNow(A,F),
    unifyNow(B,G),
    unifyNow(C,H),
    unifyNow(D,I),
    F>I,
    H is-(abs(G)).
calc_xd(A,B,C,D,E,E):-
    unifyAll(B,C).
calc_yd(A,B,C,D,E,F,F):-
    unifyNow(A,G),
    unifyNow(B,H),
    unifyNow(C,H),
    unifyNow(E,10),
    G<10,
    H>0.
calc_yd(A,B,C,D,E,F,F):-
    unifyNow(A,G),
    unifyNow(B,H),
    unifyNow(C,I),
    unifyNow(E,10),
    G<10,
    I is 9* -(H)/10.
calc_yd(A,B,C,D,E,F,F):-
    unifyAll(B,C),
    unifyAll(D,E).
out(A,B,C,D,E):-
    tcl_command([A,' configure -text ',B,' -foreground ',C],D,E).
view(A,B,C,D,E,F):-
    tcl_command(['set w ',C],E,G),
    tcl_command('source bou.tcl',G,F).
rectangle(A,B,C,D,E,F,G,H):-
    uatom(A,1),
    !,
    tcl_command([F,' create rectangle ',B,' ',C,' ',D,' ',E,' ','-stipple gray50 -fill black'],G,H).
rectangle(A,B,C,D,E,F,G,H):-
    uatom(A,0),
    tcl_command([F,' create rectangle ',B,' ',C,' ',D,' ',E],G,H).
circle(A,B,C,D,E,F,G,H):-
    uatom(A,1),
    unifyNow(C,I),
    unifyNow(D,J),
    unifyNow(E,K),
    !,
    L is I-K,
    M is L,
    N is J-K,
    O is N,
    P is I+K,
    Q is P,
    R is J+K,
    S is R,
    tcl_command([F,' create oval ','$t'(M,T),' ','$t'(O,U),' ','$t'(Q,V),' ','$t'(S,W),' -tag ',B,' -stipple gray50 -fill black'],G,H).
circle(A,B,C,D,E,F,G,H):-
    uatom(A,0),
    unifyNow(C,I),
    unifyNow(D,J),
    unifyNow(E,K),
    !,
    L is I-K,
    M is L,
    N is J-K,
    O is N,
    P is I+K,
    Q is P,
    R is J+K,
    S is R,
    tcl_command([F,' create oval ','$t'(M,T),' ','$t'(O,U),' ','$t'(Q,V),' ','$t'(S,W),' -tag ',B,' -stipple gray50 -fill black'],G,H).
move(A,B,C,D,E,E):-
    unifyNow(A,F),
    unifyNow(B,G),
    unifyNow(C,H),
    unifyNow(D,I),
    call(tcl_command([F,' move ',G,' ',H,' ',I])).
moveto(A,B,C,D,E,F):-
    unifyNow(C,G),
    unifyNow(D,H),
    size('$t'(I,J),K,'$t'(L,M),N,E,O),
    P is G-L,
    Q is P,
    R is I-(H-L),
    S is R,
    T is G+L,
    U is T,
    V is I-(H+L),
    W is V,
    tcl_command([A,' coords ',B,' ','$t'(Q,X),' ','$t'(S,Y),' ','$t'(U,Z),' ','$t'(W,A1)],O,F).
tk(A,B,B):-
    unifyNow(A,C),
    call(tk_new(C,D)),
    r_set_value(int,D).
tcl_command(A,B,B):-
    unifyNow(A,C),
    r_read_value(int,D),
    call(tcl_eval(D,C,E)).
:-static([green,move,quit,red,start,stop]).
print_state(A,A):-
    r_read_value(green,B),
    r_read_value(move,C),
    r_read_value(quit,D),
    r_read_value(red,E),
    r_read_value(start,F),
    r_read_value(stop,G),
    write((green=B,move=C,quit=D,red=E,start=F,stop=G)).
true(A,A):-
    r_empty(A).
true(['$t'(A,B,C,'$c'(D,E,notEmpty))|F],['$t'(A,B,C,'$c'(D,E,notEmpty))|F]).
s1(A,A):-
    r_read_value(stop,1),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,1),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s1(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s1(['$t'((s2(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s1(['$t'((s3(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s1(['$t'((s4(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s1(['$t'((s4(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s2(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s2(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s2(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s2(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s2(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s2(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s2(['$t'((s2(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s2(['$t'((s3(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s2(['$t'((s2(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s3(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s3(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s3(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s3(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s3(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s3(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s3(['$t'((s2(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s3(['$t'((s3(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s3(['$t'((s3(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s4(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s4(A,A):-
    r_read_value(stop,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s4(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s4(A,A):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s4(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1),
    r_empty(A).
s4(A,A):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,1),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0),
    r_empty(A).
s4(['$t'((s2(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,1),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s4(['$t'((s3(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,1),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).
s4(['$t'((s4(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,0),
    r_set_value(move,0),
    r_set_value(red,1).
s4(['$t'((s4(A,B),C),D,E,'$c'(F,G,notEmpty))|A],['$t'(C,D,E,'$c'(F,G,notEmpty))|B]):-
    r_read_value(stop,0),
    r_read_value(start,0),
    r_read_value(quit,0),
    r_set_value(green,1),
    r_set_value(move,1),
    r_set_value(red,0).