2001-06-06 20:40:57 +01:00
|
|
|
=================================================================
|
|
|
|
Logtalk - Object oriented extension to Prolog
|
2005-01-13 12:22:42 +00:00
|
|
|
Release 2.22.4
|
2001-06-06 20:40:57 +01:00
|
|
|
|
2005-01-13 12:22:42 +00:00
|
|
|
Copyright (c) 1998-2005 Paulo Moura. All Rights Reserved.
|
2001-06-06 20:40:57 +01:00
|
|
|
=================================================================
|
|
|
|
|
|
|
|
|
2004-11-29 20:36:31 +00:00
|
|
|
% start by loading the necessary library and support example files (if not
|
|
|
|
% already loaded):
|
2004-06-13 19:04:28 +01:00
|
|
|
|
2004-11-29 20:36:31 +00:00
|
|
|
| ?- logtalk_load([library(events_loader), library(types_loader), library(metapredicates_loader), library(hierarchies_loader)]).
|
|
|
|
...
|
|
|
|
|
|
|
|
| ?- logtalk_load(roots(loader)).
|
|
|
|
...
|
|
|
|
|
|
|
|
| ?- logtalk_load(relations(loader)).
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
|
|
% now you are ready for loading the example:
|
|
|
|
|
|
|
|
| ?- logtalk_load(polygons(loader)).
|
2004-06-13 19:04:28 +01:00
|
|
|
...
|
|
|
|
|
|
|
|
|
2001-06-06 20:40:57 +01:00
|
|
|
% first create four polygons and move each one to a different position
|
|
|
|
|
|
|
|
| ?- triangle::new(t, [position-(4, 5)]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- square::new(s, [position-(3, 2)]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- pentagon::new(p, [position-(7, 1)]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- hexagon::new(h, [position-(2, 4)]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% create two tuples of relation concentric
|
|
|
|
|
|
|
|
| ?- concentric::add_tuple([t, s]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- concentric::add_tuple([p, h]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% check results
|
|
|
|
|
|
|
|
| ?- concentric::tuple(Tuple), write(Tuple), nl, fail.
|
|
|
|
[t,s]
|
|
|
|
[p,h]
|
|
|
|
no
|
|
|
|
|
|
|
|
| ?- t::position(Xt, Yt), s::position(Xs, Ys), p::position(Xp, Yp), h::position(Xh, Yh).
|
|
|
|
Xh = 7,
|
|
|
|
Yh = 1,
|
|
|
|
Xp = 7,
|
|
|
|
Xs = 4,
|
|
|
|
Xt = 4,
|
|
|
|
Yp = 1,
|
|
|
|
Ys = 5,
|
|
|
|
Yt = 5
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- after_event_registry::monitors(Ma).
|
|
|
|
Ma = [concentric]
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% move triangle to a new position
|
|
|
|
|
|
|
|
| ?- t::move(3, 3).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% move the hexagon to a new position
|
|
|
|
|
|
|
|
| ?- h::move(8, 4).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% check results
|
|
|
|
|
|
|
|
| ?- concentric::tuple(Tuple), write(Tuple), nl, fail.
|
|
|
|
[t,s]
|
|
|
|
[p,h]
|
|
|
|
no
|
|
|
|
|
|
|
|
| ?- t::position(Xt, Yt), s::position(Xs, Ys), p::position(Xp, Yp), h::position(Xh, Yh).
|
|
|
|
Xh = 8,
|
|
|
|
Yh = 4,
|
|
|
|
Xp = 8,
|
|
|
|
Xs = 3,
|
|
|
|
Xt = 3,
|
|
|
|
Yp = 4,
|
|
|
|
Ys = 3,
|
|
|
|
Yt = 3
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- after_event_registry::monitors(Ma).
|
|
|
|
Ma = [concentric]
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% create another tuple of relation concentric
|
|
|
|
|
|
|
|
| ?- concentric::add_tuple([t, p]).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% move the pentagon to a new position
|
|
|
|
|
|
|
|
| ?- p::move(2, 7).
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% check results
|
|
|
|
|
|
|
|
| ?- concentric::tuple(Tuple), write(Tuple), nl, fail.
|
|
|
|
[t,s]
|
|
|
|
[p,h]
|
|
|
|
[t,p]
|
|
|
|
no
|
|
|
|
|
|
|
|
| ?- t::position(Xt, Yt), s::position(Xs, Ys), p::position(Xp, Yp), h::position(Xh, Yh).
|
|
|
|
Xh = 2,
|
|
|
|
Yh = 7,
|
|
|
|
Xp = 2,
|
|
|
|
Xs = 2,
|
|
|
|
Xt = 2,
|
|
|
|
Yp = 7,
|
|
|
|
Ys = 7,
|
|
|
|
Yt = 7
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- after_event_registry::monitors(Monitors).
|
|
|
|
Monitors = [concentric]
|
|
|
|
yes
|
|
|
|
|
|
|
|
|
|
|
|
% clean up instances, tuples and monitors
|
|
|
|
|
|
|
|
| ?- concentric::remove_all_tuples.
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- triangle::delete(t).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- square::delete(s).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- pentagon::delete(p).
|
|
|
|
yes
|
|
|
|
|
|
|
|
| ?- hexagon::delete(h).
|
|
|
|
yes
|