M Winther wrote on Tue, Nov 20, 2012 06:52 AM UTC:
In that case, provided that you have win-condition checkmate set, you
don't need to check whether the king is checked, because Zillions does
that automatically. 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. However, this technique will increase the value of the
pieces relative to the pawns. So you need perhaps to tweak the value of the
pawns (and other pieces, too) by increasing the number of "adds". You
could use my technique of "tweak-shift", which is simple. Zillions tries
to evaluate the pieces, but this is highly complicated, and it is necessary
to improve this evaluation by tweaking the value of pieces. This improves
the playing strength very much. My version of Chinese Chess beats the
Zillions standard version every time. It is much better only because I have
given the pieces a more appropriate value.
M. Winther