This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/Logtalk/examples/polygons/SCRIPT

162 lines
2.4 KiB
Plaintext
Raw Normal View History

=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.23.0
Copyright (c) 1998-2005 Paulo Moura. All Rights Reserved.
=================================================================
% start by loading the necessary library and support example files (if not
% already loaded):
| ?- 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)).
...
% 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