**M. Winther wrote:** Zillions forces you to make a move that protects the
king, and you cannot make another move.
So it is easy to enforce the rule that an enemy pawn must be captured.
Simply add another "move-type" in every piece definition. This move type
is exactly the same as the normal move-type except that (1) it is set to
higher priority (2) you must verify before the move is executed that an
enemy pawn is captured: "(verify enemy?)(verify (piece? Pawn))".
This will enforce the capture of an enemy pawn provided that the king is
not in check. It will still enforce the capture of a pawn if the king is
protected thereby.
***
I have done this procedure, as you can see in the zillions file I have
posted in the first post of this discussion. I have a higher priority
move-type, called “tasty-movesâ€, for each piece that check if it is
possible to capture a pawn. If this is not possible , then you can make
“normal†moves.
But there is a problem, a big problem. If the king is in check and you can
capture a pawn, for Zillions’ AI the only possible moves are those in
which you capture a pawn, but with those moves you cannot get the king out
of check, so it is checkmate. Not what I want.
There is another problem. The situation is that a knight is protecting a
king from an enemy bishop: white has Ke1, Nd2; black has Bb4. But there is
an enemy pawn in e4, so the knight can capture it. Now, I want that the
knight doesn’t move because if it do so, the king would be in check. But
for Zillions’ AI there is no possible move, so it is stalemate. Not what
I want.
Any ideas?
p.s. I sent you an e-mail.