>>789
こうですか?確かに動いてるっぽい。

straight(BOARD,X,Y,DX,DY,Stn,Len):-
X1 is X + DX,
Y1 is Y + DY,
straight(BOARD,X1,Y1,DX,DY,Stn,Len1),
Len is Len1 + 1,!.

うーん、何となくわかるけど、動く場合と動かない場合の違いがイマイチはっきりしないw
非決定性ぽく動くのがprologの特徴なのかと思ってました。