annotate Examples/toy/toy.tokio @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 %% ------------------------------------------------- BOUNCE
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 toy :- static([green, red, move, stop, start,quit]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 *move:=1,*quit:=0,*stop:=0,*start:=1,*red:=0,*green:=1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6 bounce_init(W,R,G),@toy1(W,R,G).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 toy1(W,R,G) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9 [](event), % input
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 s1, % automaton
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11 []((button_red(R),button_green(G),bounce(W))). % output
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 % ?- compile(['../tableau/gi.out']).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 event :- nextevent(E),E=E1,event_select(E1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 event_select(noevent) :- true.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 event_select(button(_,start)) :- *start := 1, *stop := 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 event_select(button(_,stop)) :- *stop := 1, *start := 0.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 event_select(button(_,quit)) :- *quit := 1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 button_red(Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 *red =0, Out => out("").
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 button_red(Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 *red =1, Out => out("Red").
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 button_green(Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 *green =0, Out => out("").
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 button_green(Out) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 *green =1, Out => out("Green").
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 % size(400,400,10,fixed) :- true.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 size(200,200,5,'7x14') :- true.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 bounce_init( [Window0, View0, Circ0, Xout0, X, Yout0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 Y, Xd, Yd, Ydd, Xlim, Ylim],Xout0,Yout0) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 size(Hight,Width,R,Font),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 H0 = Hight-2, W0 = Width-2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 H1 = Hight/2, W1 = Width/2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 View <= view(Hight,Width),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 % View => setcolors(rgb(65000,0,0),white),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 Xout <= output("Red",font(Font)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 Yout <= output("Green",font(Font)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 Start <= button("Start",start,font(Font)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 Stop <= button("Stop",stop,font(Font)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 Quit <= button("Quit",quit,font(Font)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 Box <= hbox([vbox([Xout,Yout,space,Start,Stop,Quit]),View]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 Window <= window("Toy Program",Box),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 Window => open,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 View => rect(0,0,H0,W0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 View => fillcircle(Circ,H1,W1,R),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 Window0<--Window, View0<--View, Circ0<--Circ,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 Xout0<--Xout, Yout0<--Yout,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 Ylim = Hight-10, Xlim = Width-10, Ydd = -R/2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 #((@Ylim=Ylim,@Xlim=Xlim,@Ydd=Ydd)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 @X = H1, @Y = W1, @Xd = R/2, @Yd = R*2.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 bounce([_, View, Obj, _Xout, X, _Yout, Y, Xd, Yd, Ydd, Xlim, _]) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 *move = 1,*quit = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 X0 is integer(X), Y0 is integer(Y),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 View => moveto(Obj,X0,Y0),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 Y1 is Y+Yd,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 calc_xd(X, Xd, Xd1, Xlim),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 calc_yd(Y, Yd, Ydt, Y1, Yt1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 @X = X+Xd,@Xd = Xd1, @Y = Yt1, @Yd = Ydt+Ydd.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 bounce([_, _, _, _, X, _, Y, Xd, Yd, _, _, _]) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 *move = 0,*quit = 0,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 @X = X,@Xd = Xd, @Y = Y, @Yd = Yd.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 bounce([W|_]) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 *quit = 1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 W => close.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 calc_xd(X, Xd, Xd1, _) :- X < 10, Xd1 is abs(Xd).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 calc_xd(X, Xd, Xd1, Xlim) :- X > Xlim, Xd1 is -abs(Xd).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 calc_xd(_, Xd, Xd, _):-true.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 calc_yd(Y, Yd, Ydt, _, Y0) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 Y < 10, Yd > 0 , Ydt = Yd,Y0 = 10.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76 calc_yd(Y, Yd, Ydt, _, Y0) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 Y < 10, Ydt = -Yd*0.9,Y0 = 10.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 calc_yd(_, Yd, Yd, Y1, Y1):-true.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79