Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :- dynamic(move/2).
- :- dynamic(hits/2).
- :- dynamic(misses/2).
- :- dynamic(sunks/2).
- :- dynamic(position/2).
- move(1,1).
- move(1,2).
- move(1,3).
- move(1,4).
- move(1,5).
- move(2,1).
- move(2,2).
- move(2,3).
- move(2,4).
- move(2,5).
- move(3,1).
- move(3,2).
- move(3,3).
- move(3,4).
- move(3,5).
- move(4,1).
- move(4,2).
- move(4,3).
- move(4,4).
- move(4,5).
- move(5,1).
- move(5,2).
- move(5,3).
- move(5,4).
- move(5,5).
- target(X,Y):-
- move(X,Y),
- retract(move(X,Y)),
- assert(position(X,Y)).
- hit:-
- position(X,Y),
- assert(hits(X,Y)),
- retract(position(X,Y)).
- sunk:-
- position(X,Y),
- assert(hits(X,Y)),
- hits_to_sunks,
- retract(position(X,Y)).
- miss:-
- position(X,Y),
- assert(misses(X,Y)),
- retract(position(X,Y)).
- hits_to_sunks:-
- hits(X,Y),
- assert(sunks(X,Y)),
- remove_perimeter(X,Y).
- remove_perimeter(X,Y):-
- Right is Y + 1,
- Top is X - 1,
- Bottom is X + 1,
- %RemoveBottom
- (X < 5, retract(move(Bottom,Y)));
- %RemoveTop
- (X > 1 , retract(move(Top,Y)));
- %RemoveRight
- (Y < 5, retract(move(X,Right)));
- %RemoveTopRight
- (Y < 5, X >1 , retract(move(Top,Right)));
- %RemoveBottomRight
- (Y < 5, X < 5 , retract(move(Bottom,Right))).
- remove_move(X,Y):-
- retract(move(X,Y)).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement