[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Comments/Ratings for a Single Item
The Zillions implementation handles checkmate/stalemate positions fairly well, but often overlooks fairly obvious 'run for the border' (moving the King to the enemy eighth rank) wins. Any suggestions how to improve its play in this area?
Make reaching the back row part of checkmate. Add code such that if the a King moves to the back row, it also captures an opposing King (an extra one off board can be easier to find).
<p>
This means the actual winning move won't be made, however. Variations of this approach might encourage Zillions without altering play.
Instead of the win-conditon being the presence of the King within a particular zone, make the win-conditon also the absence of the King on the rest of the field. This is your current condition: (win-condition (White Black) (absolute-config King (promotion-zone))) Make it: (win-condition (White Black) (and (absolute-config King (promotion-zone)) (absolute-config (not King) (not-promotion-zone)) ) ) You will have to define the not-promotion-zone, which will be all the cells that are not part of the normal promotion-zone. The Zillions engine will now have the 'urge' to move that King into the promotion-zone.
Thanks, Peter. It finds and defends against these wins much better now. The macro I used, wtih comments: (define King-forward ( $1 (verify not-friend?) (if (in-zone? promotion-zone) (verify not-attacked?) ; to prevent moving into check (if (in-zone? promotion-zone a1) (capture White-throne) ; dummy position with a white King else (capture Black-throne) ; dummy position with a Black King ) add else (add-create) ; another macro to make the move and create a piece ; if appropriate. Your normal move goes here. ) ))
Larry's suggestion also improves play and the code is elegant. I'm going to do some testing and see which approach seems to do better. I have a more elegant macro for Peter's method which will allow the final move to be made: (define King-win ( (verify (in-zone? promotion-zone)) (if (in-zone? promotion-zone a1) White-throne ; dummy position with a White King else Black-throne ; dummy position with a Black King ) add ))
5 comments displayed
Permalink to the exact comments currently displayed.