| Author |
Message |
Fergus Duniho (Fduniho)
| | Posted on Tuesday, December 05, 2000 - 1:37 pm: | |
It would be really helpful if I could customize how checkmate works. The idea of checkmate is inherently ambiguous when it comes to Chess variants where a player can make multiple moves in a turn. In some games, checkmate may occur if a player can't get out of it during the first move of his turn, and in other games, it may occur when a player cannot use any part of his turn to get out of check. Zillions presently understand checkmate to occur whenever a player's first move won't get him out of check. I want the option of telling Zillions that a player is checkmated only if he can't use any part of his turn to get out of check. I want this most immediately for a Hostage Chess ZRF I am working on. I have implemented a hostage exchange as two partial moves. The problem with this is that either part of these two parts could be used to eliminate a checkmate, and sometimes both parts will be required to eliminate a checkmate. If I could tell Zillions to understand checkmate differently, I would have a very efficient ZRF that plays it well and completely legally. As it is, I have to sacrifice complete implementation of the rules or strength of play. Another option is to add a new goal, such as checkmate-turn. |
Fergus Duniho (Fduniho)
| | Posted on Wednesday, December 06, 2000 - 5:37 pm: | |
I have some new thoughts on the subject. Instead of changing the checkmated goal, you could add some options for how add-partial works. You have already done this maximal-captures. Here are the two options that should do it. First, have an option for allowing a checkmatable piece to move into or remain in check when add-partial or add-partial-copy is used. Second, have an option for making an add-partial move illegal when the piece moved could not make any more legal moves. This would work recursively too. So, if a piece's turn consisted of three partial moves with the first two moves being done with add-partial, the first move wouldn't be legal unless the second was, and the second wouldn't be legal unless the third was. So the first move wouldn't be legal unless a legal third move could be made. The first option has one problem, but the second option fixes it. The first option, by itself, could let a piece step into checkmate, which should normally be illegal in any Chess variant. But combining the first option with the second prevents this. Although the first option would let a player move into check with a partial move, the second option would make this illegal whenever the player had no second move that would remove the check. Given that the first option works well only in conjunction with the second option, it might be best to combine them into a single option. Working together, these two options would allow the checkmate goal to work appropriately in games where checkmate means that no combination of moves on a player's turn can remove a check. You could call the second option (or the combined option) something like complete-partials, meaning that all partial moves should be completed. With (complete-partials true) set at the game level, some multi-move/turn Chess variants could be made to work properly with Zillions. After I wrote this, something seemed familiar. I found the pass-partial option, and, on reading its description, it seemed to be what I had in mind by complete-partials, but it is not. I tested it, and it did not work as complete-partials should. Although (complete-partials true) means that a player must complete all partial moves, which is what it says (pass-partial false) means, the description at the top of pass-partial, "Changes whether a player is allowed to end his move even if he has subsequent partial moves available," has enough ambiguity in it to mean something other than what I have in mind. I guess (pass-partial true) means that a player has the option of passing even when he has some partial moves left, and (pass-partial false) merely shuts off this option. Whereas (complete-partials true) would be something completely different. |
|