%trace
domains
startx,starty = integer
dicevalx,dicevaly = integer
%totalx,totaly = integer
database
state(startx,starty,dicevalx,dicevaly)
predicates
play(startx,starty)
rand(startx,starty)
%turnx(startx,starty,totalx)
%turny(starty,startx,totaly)
clauses
play(Startx,StartY):-
Startx = 25,
Starty <= 25,
write("problem solved").
play(Startx,StartY):-
Starty = 25,
Startx <= 25,
write("problem solved").
play(Startx,Starty):-
Startx = 0,
Starty = 0,
rand(6,Dicevalx),
Newx = Startx + Dicevalx,
rand(6,Dicevaly),
Newy = Starty + Dicevaly,
%Newx <> Newy,
Newvalx=Dicevalx,
Newvaly=Dicevaly,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
play(Startx,Starty):-
Startx <= 19,
Starty <= 19,
rand(6,Dicevalx),
Newx = Startx + Dicevalx,
rand(6,Dicevaly),
Newy = Starty + Dicevaly,
Newvalx=Dicevalx,
Newvaly=Dicevaly,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
play(Startx,Starty):-
Startx < 26,
Starty < 26,
rand(6,Dicevalx),
rand(6,Dicevaly),
Startx + Dicevalx <= 25,
Newx = Startx + Dicevalx,
Newy = Starty + Dicevaly,
Newx <= 25,
Newy <= 25,
Newvalx=Dicevalx,
Newvaly=Dicevaly,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
rand(X,Y):-
random(Z),
Y = (X - 1) * Z + 1.
goal
makewindow(1,2,3,"2 player spiral move game",0,0,25,80),
play(0,0),
save("outs.txt").
***************
spiral1
%trace
domains
startx,starty = integer
dicevalx,dicevaly = integer
totalx,totaly = integer
database
state(startx,starty,dicevalx,dicevaly)
predicates
play(startx,starty)
rand(startx,starty)
turnx(startx,starty,dicevalx,totalx,totaly)
turny(startx,starty,dicevaly,totalx,totaly)
check(startx,dicevalx,finalvalx)
clauses
play(Startx,StartY):-
Startx = 25,
Starty <= 25,
write("problem solved").
play(Startx,StartY):-
Starty = 25,
Startx <= 25,
write("problem solved").
play(Startx,Starty):-
Startx = 0,
Starty = 0,
rand(6,Dicevalx),
Newvalx = Dicevalx,
turnx(Startx,Starty,Newvalx,Totalx,Totaly),
rand(6,Dicevaly),
Newvaly = Dicevaly,
Totalxx = Totalx,
Totalxy = Totaly,
turny(Totalxx,Totalxy,Newvaly,Totalyx,Totalyy),
Newx = Totalyx,
Newy = Totalyy,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
play(Startx,Starty):-
Startx <= 19,
Starty <= 19,
rand(6,Dicevalx),
Newvalx = Dicevalx,
turnx(Startx,Starty,Newvalx,Totalx,Totaly),
rand(6,Dicevaly),
Newvaly = Dicevaly,
Totalxx = Totalx,
Totalxy = Totaly,
turny(Totalxx,Totalxy,Newvaly,Totalyx,Totalyy),
Newx = Totalyx,
Newy = Totalyy,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
play(Startx,Starty):-
Startx < 26,
Starty < 26,
rand(6,Dicevalx),
Newvalx=Dicevalx,
/* turnx(Startx,Starty,Newvalx,Totalx,Totaly), Totalxx = Totalx, Totalxy = Totaly, Totalxx < 25,*/
check(Startx,Newvalx,Totalx),
rand(6,Dicevaly),
Newvaly=Dicevaly,
turny(Totalxx,Totalxy,Newvaly,Totalyx,Totalyy),
Newx = Totalyx,
Newy = Totalyy,
assert(state(Newx,Newy,Newvalx,Newvaly)),
play(Newx,Newy).
rand(X,Y):-
random(Z),
Y = (X - 1) * Z + 1.
turnx(Startx,Starty,Dicevalx,Totalx,Totaly):-
Startx + Dicevalx <> Starty,
free(Totalx),
Totalx = Startx + Dicevalx,
free(Totaly),
Totaly = Starty.
turnx(Startx,Starty,Dicevalx,Totalx,Totaly):-
Startx + Dicevalx = Starty,
free(Totalx),
Totalx = Startx + Dicevalx,
free(Totaly),
Totaly = 0.
turny(Startx,Starty,Dicevaly,Totalx,Totaly):-
Starty + Dicevaly <> Startx,
free(Totaly),
Totaly = Starty + Dicevaly,
free(Totalx),
Totalx = Startx.
turny(Startx,Starty,Dicevaly,Totalx,Totaly):-
Starty + Dicevaly = Startx,
free(Totaly),
Totaly = Starty + Dicevaly,
free(Totalx),
Totalx = 0.
check(Startx,Dicevalx,Finalvalx):-
25 - Startx >= Dicevalx,
free(Finalvalx),
Finalvalx = Startx + Dicevalx.
check(Startx,Dicevalx,Finalvalx):-
25 - Startx <= Dicevalx,
free(Finalvalx),
Finalvalx = Startx.
goal
makewindow(1,2,3,"2 player spiral move game",0,0,25,80),
play(0,0),
save("outs.txt").
Output
state(0,2,2,2)
state(4,7,4,5)
state(9,10,5,3)
state(12,16,3,6)
state(15,21,3,5)
state(20,25,5,4)
************
state(3,5,3,5)
state(6,9,3,4)
state(10,13,4,4)
state(0,15,5,2)
state(5,19,5,4)
state(8,20,3,1)
state(11,23,3,3)
state(12,25,1,2)