; *** Cuban Chaturang ; *** Rules from D Pritchard, _Encyclopedia of Chess Variants_ ; *** ZRF by Ivan A Derzhanski ; You need to purchase Zillions of Games to load this rules file ; Visit the Zillions web site at http://www.zillions-of-games.com (define leap1 ($1 (verify not-friend?) add) ) (define leap2 ($1 $2 (verify not-friend?) add) ) (define leap3 ($1 $2 $2 (verify not-friend?) add) ) (define slide ($1 (while empty? add $1) (verify not-friend?) add)) (define Taino-add (if (in-zone? promotion-zone) (add Dog Behique Semi Vampire Dama_Cacica) else add) ) (define Taino-move ( n (set-attribute never-moved? false) (verify empty?) (Taino-add) ) ) (define Taino-rush ( (verify never-moved?) (verify (in-zone? second-rank)) n (verify empty?) n (verify empty?) (set-attribute never-moved? false) add n (verify empty?) (set-attribute never-moved? false) add ) ) (define Taino-take ( $1 (set-attribute never-moved? false) (verify enemy?) (Taino-add) ) ) (define En-Passant-1 ( $1 (set-attribute never-moved? false) (verify enemy?) (verify last-to?) (verify (piece? Taino)) capture n to n (verify (or last-from? (last-from? n))) add ) ) (define En-Passant-2 ( $1 (set-attribute never-moved? false) (verify enemy?) (verify last-to?) (verify (piece? Taino)) capture n n to n (verify last-from?) add ) ) (define Board-Definitions (image "images\Chess\Chess10x10.bmp") (grid (start-rectangle 5 5 53 53) (dimensions ("a/b/c/d/e/f/g/h/i/j" (49 0)) ; files ("10/9/8/7/6/5/4/3/2/1" (0 49)) ; ranks ) (directions (n 0 -1) (e 1 0) (s 0 1) (w -1 0) (ne 1 -1) (nw -1 -1) (se 1 1) (sw -1 1) ) ) (symmetry Black (n s)(s n) (nw sw)(sw nw) (ne se)(se ne)) (zone (name promotion-zone) (players White) (positions a10 b10 c10 d10 e10 f10 g10 h10 i10 j10) ) (zone (name promotion-zone) (players Black) (positions a1 b1 c1 d1 e1 f1 g1 h1 i1 j1) ) (zone (name second-rank) (players White) (positions a2 b2 c2 d2 e2 f2 g2 h2 i2 j2) ) (zone (name second-rank) (players Black) (positions a9 b9 c9 d9 e9 f9 g9 h9 i9 j9) ) ) (game (title "Cuban Chaturang") (description "Object: Checkmate the opponent's Cacique_Nerey. Right-click on any man to see the properties dialogue.") (history "D Pritchard says: 'Prof. German A. Mentz (1960). Developed over many years, the game reflects the ancient Indocuban civilization. [...] Played in Havana.'\ The description doesn't say if castling exists and how it works, so the implementation assumes that there is no such thing.") (strategy "Token observation: If the Vampires (and perhaps a couple or two of Tainos) are exchanged early in the game, it degenerates into a conflict of two OrthoChess armies on a board that's too large for them.") (win-sound "Audio\Orchestra_CF.wav") (loss-sound "Audio\Orchestra_FC.wav") (click-sound "Audio\Pickup.wav") (release-sound "Audio\WoodThunk.wav") (players White Black) (turn-order White Black) (pass-turn false) (board (Board-Definitions)) (board-setup (White (Taino a2 b2 c2 d2 e2 f2 g2 h2 i2 j2) (Dog b1 i1) (Vampire d1 g1) (Behique c1 h1) (Semi a1 j1) (Dama_Cacica f1) (Cacique_Nerey e1) ) (Black (Taino a9 b9 c9 d9 e9 f9 g9 h9 i9 j9) (Dog b10 i10) (Vampire d10 g10) (Behique c10 h10) (Semi a10 j10) (Dama_Cacica f10) (Cacique_Nerey e10) ) ) (piece (name Taino) (help "Taino: moves forward, captures diagonally, can promote on 10th row") (description "Taino\A Taino can move straight ahead one square, or two or three squares from its starting position. A Taino captures by moving one square ahead and diagonally. If a Taino reaches the far rank it promotes, changing into a Knight, Bishop, Rook, Vampire, or Queen. On rare occasions Tainos can also execute a move called `En Passant`, or `in passing`. This allows a Taino to take an enemy Taino that has just moved two or three squares.") (image White "images\Chess\wpawn.bmp" Black "images\Chess\bpawn.bmp") (attribute never-moved? true) (moves (Taino-rush) (Taino-move) (Taino-take nw) (Taino-take ne) (En-Passant-1 e) (En-Passant-1 w) (En-Passant-2 se) (En-Passant-2 sw) ) ) (piece (name Dog) (help "Dog: moves like an `L`, 2 squares one way and one the other") (description "Dog\A Dog moves like an `L`, two squares vertically plus one horizontally, or two squares horizontally plus one vertically. It hops over any pieces on the way.") (image White "images\Chess\wknight.bmp" Black "images\Chess\bknight.bmp") (moves (leap2 n ne) (leap2 n nw) (leap2 s se) (leap2 s sw) (leap2 e ne) (leap2 e se) (leap2 w nw) (leap2 w sw) ) ) (piece (name Behique) (help "Behique: slides diagonally any number of squares") (description "Behique\A Behique moves any number of squares on a diagonal. It may not leap over other pieces.") (image White "images\Chess\wbishop.bmp" Black "images\Chess\bbishop.bmp") (moves (slide ne) (slide nw) (slide se) (slide sw) ) ) (piece (name Semi) (help "Semi: slides any number of squares along the row or column.") (description "Semi\A Semi moves any number of squares orthogonally on a rank or a file. It may not leap over other pieces.") (image White "images\Chess\wrook.bmp" Black "images\Chess\brook.bmp") (moves (slide n) (slide e) (slide s) (slide w) ) ) (piece (name Vampire) (help "Vampire (Bat): moves as King, Knight or Zebra") (description "Vampire (Bat)\A Vampire (Bat) moves to any adjacent square, or to the far corner of a (2,3) or (3,4) rectangle.") (image White "images\Chess\wdownknight.bmp" Black "images\Chess\bdownknight.bmp") (moves (leap1 n) (leap1 e) (leap1 w) (leap1 s) (leap1 ne) (leap1 nw) (leap1 se) (leap1 sw) (leap2 n ne) (leap2 n nw) (leap2 s se) (leap2 s sw) (leap2 e ne) (leap2 e se) (leap2 w nw) (leap2 w sw) (leap3 n ne) (leap3 n nw) (leap3 s se) (leap3 s sw) (leap3 e ne) (leap3 e se) (leap3 w nw) (leap3 w sw) ) ) (piece (name Dama_Cacica) (notation "Cacica") (help "Dama_Cacica: can slide any number of squares in any direction") (description "Dama_Cacica\A Dama_Cacica moves any number of squares in a straight line. It may not leap over other pieces.") (image White "images\Chess\wqueen.bmp" Black "images\Chess\bqueen.bmp") (moves (slide n) (slide e) (slide s) (slide w) (slide ne) (slide nw) (slide se) (slide sw) ) ) (piece (name Cacique_Nerey) (notation "Nerey") (help "Cacique_Nerey: moves 1 square in any direction to a safe square") (description "Cacique_Nerey\A Cacique_Nerey can move to any adjacent square, as long as it is not attacked. There is no castling.") (image White "images\Chess\wking.bmp" Black "images\Chess\bking.bmp") (moves (leap1 n) (leap1 e) (leap1 w) (leap1 s) (leap1 ne) (leap1 nw) (leap1 se) (leap1 sw) ) ) (loss-condition (White Black) (checkmated Cacique_Nerey) ) )