55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- object(bounded_history_point,
							 | 
						||
| 
								 | 
							
									imports(bounded_coordinate, point_history),
							 | 
						||
| 
								 | 
							
									instantiates(class),
							 | 
						||
| 
								 | 
							
									specializes(point)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									:- info([
							 | 
						||
| 
								 | 
							
										version is 1.1,
							 | 
						||
| 
								 | 
							
										date is 2000/10/31,
							 | 
						||
| 
								 | 
							
										authors is 'Paulo Moura',
							 | 
						||
| 
								 | 
							
										comment is 'Two dimensional point moving in a constrained area and remembering past point positions.',
							 | 
						||
| 
								 | 
							
										source is 'Example adopted from the SICStus Objects documentation.']).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									move(X, Y) :-
							 | 
						||
| 
								 | 
							
										::check_bounds(x, X),
							 | 
						||
| 
								 | 
							
										::check_bounds(y, Y),
							 | 
						||
| 
								 | 
							
										::position(OldX, OldY),
							 | 
						||
| 
								 | 
							
										^^move(X, Y),
							 | 
						||
| 
								 | 
							
										::add_to_history((OldX, OldY)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									print :-
							 | 
						||
| 
								 | 
							
										::print_bounds(x),
							 | 
						||
| 
								 | 
							
										::print_bounds(y),
							 | 
						||
| 
								 | 
							
										::print_history,
							 | 
						||
| 
								 | 
							
										^^print.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									instance_base_name(bhp).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									default_init_option(history-[]).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									default_init_option(bounds(x)-(-10, 10)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									default_init_option(bounds(y)-(-10, 10)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									default_init_option(Default) :-
							 | 
						||
| 
								 | 
							
										^^default_init_option(Default).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									process_init_option(history-History) :-
							 | 
						||
| 
								 | 
							
										::init_history(History).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									process_init_option(bounds(Coordinate)-(Min, Max)) :-
							 | 
						||
| 
								 | 
							
										::set_bounds(Coordinate, Min, Max).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									process_init_option(Option) :-
							 | 
						||
| 
								 | 
							
										^^process_init_option(Option).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- end_object.
							 |