Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :- module(t_131030, [t131030/3]).
- t131030(MyColor):-
- ruut(X, Y, PieceType),
- minu_nupp(MyColor, PieceType),
- nl, write([PieceType, 'Nupp ', ruudul, X, Y]),
- leia_suund(MyColor, Suund),
- votmine(X, Y, Suund, X1, Y1, MyColor),
- !.
- t131030(MyColor):-
- ruut(X, Y, PieceType),
- minu_nupp(MyColor, PieceType),
- nl, write([PieceType, 'Nupp ', ruudul, X,Y]),
- leia_suund(MyColor, Suund),
- kaimine(X, Y, Suund, X1, Y1),
- !.
- t131030(_).
- t131030(MyColor, Xin, Yin):-
- kasuta_kui_ei_ole_null(Xin, X),
- kasuta_kui_ei_ole_null(Yin, Y),
- ruut(X, Y, PieceType),
- minu_nupp(MyColor, PieceType),
- nl, write([PieceType, 'Nupp ', ruudul, X, Y]),
- leia_suund(MyColor, Suund),
- votmine(X, Y, Suund, X1, Y1, MyColor),
- !.
- t131030(MyColor, Xin, Yin):-
- kasuta_kui_ei_ole_null(Xin, X),
- kasuta_kui_ei_ole_null(Yin, Y),
- ruut(X, Y, PieceType),
- minu_nupp(MyColor, PieceType),
- nl, write([PieceType, 'Nupp ', ruudul, X,Y]),
- leia_suund(MyColor, Suund),
- kaimine(X, Y, Suund, X1, Y1),
- !.
- t131030(_, _, _).
- kasuta_kui_ei_ole_null(0, _).
- kasuta_kui_ei_ole_null(X, X).
- leia_suund(1,1):- !.
- leia_suund(2,-1).
- minu_nupp(C, C).
- minu_nupp(1, 10).
- minu_nupp(2, 20).
- %--------------------------------
- kaigu_variandid(X, Y, Suund, X1, Y1, MyColor):-
- votmine(X, Y, Suund, X1, Y1, MyColor),!.
- kaigu_variandid(X, Y, Suund, X1, Y1, _):-
- kaimine(X, Y, Suund, X1, Y1),!.
- %--------------------------------
- votmine(X,Y,Suund,X1,Y1, MyColor):-
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor),
- vota(X,Y,Suund,X1,Y1,X2,Y2), !,
- write([' votab ', X1,Y1, ' ja liigub ', X2, Y2]).
- %--------
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor) :- % Tamm
- ruut(X, Y, PieceType),
- tamm(PieceType),
- leia_diagonaalid(X, Y, X1, Y1),
- ruut(X1,Y1, TargetPieceType),
- not(minu_nupp(MyColor, TargetPieceType)),
- TargetPieceType =\= 0,
- kas_saab_votta_nuppu(X,Y,Suund,X1,Y1,X2,Y2, MyColor).
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor):- % Votmine edasi paremale
- X1 is X + Suund,
- Y1 is Y + 1,
- ruut(X1,Y1, PieceType),
- not(minu_nupp(MyColor, PieceType)),
- PieceType =\= 0,
- X2 is X1 + Suund,
- Y2 is Y1 + 1,
- ruut(X2,Y2, 0).
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor):- % Votmine edasi vasakule
- X1 is X + Suund,
- Y1 is Y - 1,
- ruut(X1,Y1, PieceType),
- not(minu_nupp(MyColor, PieceType)),
- PieceType =\= 0,
- X2 is X1 + Suund,
- Y2 is Y1 - 1,
- ruut(X2,Y2, 0).
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor):- % Votmine tagasi paremale
- X1 is X + Suund * -1,
- Y1 is Y + 1,
- ruut(X1,Y1, PieceType),
- not(minu_nupp(MyColor, PieceType)),
- PieceType =\= 0,
- X2 is X1 + Suund * -1,
- Y2 is Y1 + 1,
- ruut(X2,Y2, 0).
- kas_saab_votta(X,Y,Suund,X1,Y1,X2,Y2, MyColor):- % Votmine tagasi vasakule
- X1 is X + Suund * -1,
- Y1 is Y - 1,
- ruut(X1,Y1, PieceType),
- not(minu_nupp(MyColor, PieceType)),
- PieceType =\= 0,
- X2 is X1 + Suund * -1,
- Y2 is Y1 - 1,
- ruut(X2,Y2, 0).
- leia_diagonaalid(X, Y, X1, Y1) :-
- between(1, 16, Y1t),
- (Y1t =< 8 ->
- Y1 is Y1t,
- X1 is Y1 + X - Y;
- Y1 is Y1t - 8,
- X1 is X + Y - Y1),
- X1 >= 1,
- X1 =< 8.
- leia_diagonaalid(X, Y, -1, -1).
- kas_saab_votta_nuppu(X,Y,Suund,X1,Y1,X2,Y2, MyColor) :-
- pole_midagi_vahel(X, Y, X1, Y1),
- ruum_taga(X, Y, X1, Y1, X2, Y2),
- write(' (tamm saab votta) ').
- pole_midagi_vahel(X, Y, X1, Y1) :-
- leia_diagonaalid(X, Y, Xi, Yi),
- (Xi >= 0 ->
- (peaks_olema_tyhi(X, Y, X1, Y1, Xi, Yi) ->
- (not(ruut(Xi, Yi, 0)) -> !, fail; fail); fail); nl).
- peaks_olema_tyhi(X, Y, X1, Y1, Xi, Yi) :-
- kaugus(X, Y, Xi, Yi, DistanceToPoint),
- kaugus(X, Y, X1, Y1, DistanceToTarget),
- DistanceToPoint > 0,
- DistanceToPoint < DistanceToTarget,
- DifX1 is X1 - X,
- DifXi is Xi - X,
- sign(DifX1) =:= sign(DifXi),
- DifY1 is Y1 - Y,
- DifYi is Yi - Y,
- sign(DifY1) =:= sign(DifYi).
- ruum_taga(X, Y, X1, Y1, Xt, Yt) :-
- DifX is X1 - X,
- DifY is Y1 - Y,
- SignX is sign(DifX),
- SignY is sign(DifY),
- Xt is X1 + SignX,
- Yt is Y1 + SignY,
- ruut(Xt, Yt, 0).
- %--------------------------------
- kaimine(X,Y,Suund,X1,Y1):-
- kas_naaber_vaba(X,Y,Suund,X1,Y1),
- tee_kaik(X,Y,X1,Y1), !,
- write([' kaib ', X1,Y1]).
- kas_naaber_vaba(X,Y,Suund,X1,Y1):-
- X1 is X +Suund,
- Y1 is Y + 1,
- ruut(X1,Y1, 0).
- kas_naaber_vaba(X,Y,Suund,X1,Y1):-
- X1 is X +Suund,
- Y1 is Y -1,
- ruut(X1,Y1, 0), write(' voi ').
- kas_naaber_vaba(X,Y,X1,Y1):-
- ruut(X,Y, Status),
- assert(ruut1(X1,Y1, Status)),!.
- kas_naaber_vaba(X,Y,Suund,X1,Y1) :- % Tamm saab liikuda tagasi
- ruut(X, Y, PieceType),
- tamm(PieceType),
- X1 is X - Suund,
- Y1 is Y + 1,
- ruut(X1,Y1, 0).
- kas_naaber_vaba(X,Y,Suund,X1,Y1) :- % Tamm saab liikuda tagasi
- ruut(X, Y, PieceType),
- tamm(PieceType),
- X1 is X - Suund,
- Y1 is Y - 1,
- ruut(X1,Y1, 0).
- tee_kaik(X, Y, X1, Y1) :-
- retract(ruut(X, Y, PieceType)),
- retract(ruut(X1, Y1, _)),
- tee_uus_nupp(PieceType, X1, NewPieceType),
- assert(ruut(X1, Y1, NewPieceType)),
- assert(ruut(X, Y, 0)).
- vota(X, Y, Suund, X1, Y1, X2, Y2) :-
- retract(ruut(X, Y, PieceType)),
- assert(ruut(X, Y, 0)),
- retract(ruut(X2, Y2, _)),
- tee_uus_nupp(PieceType, X2, NewPieceType),
- assert(ruut(X2, Y2, NewPieceType)),
- retract(ruut(X1, Y1, _)),
- assert(ruut(X1, Y1, 0)).
- tee_uus_nupp(1, 8, 10) :-
- write(' (saab tammiks) ').
- tee_uus_nupp(2, 1, 20) :-
- write(' (saab tammiks) ').
- tee_uus_nupp(T, _, T).
- tamm(10).
- tamm(20).
- kaugus(X1, Y1, X2, Y2, Distance) :-
- ((DifX is X2 - X1, DifX < 0, NewDifX is DifX * -1); (NewDifX is X2 - X1)),
- ((DifY is Y2 - Y1, DifY < 0, NewDifY is DifY * -1); (NewDifY is Y2 - Y1)),
- Distance is max(NewDifX, NewDifY).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement