git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1580 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
=================================================================
 | 
						|
Logtalk - Object oriented extension to Prolog
 | 
						|
Release 2.27.1
 | 
						|
 | 
						|
Copyright (c) 1998-2006 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
 |