Check out Grant Acedrex, our featured variant for April, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Single Comment

Apothecary Chess-Modern. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, May 28, 2020 01:06 PM UTC:

What you should learn from Extra Move Chess is how to program your code to deal with two moves made by the same player on the same turn. While Chess allows Pawn Promotion as two moves without going through this, this is because adding a piece to a space does not change the values of $origin and $dest. However, dropping a piece does. It counts as a complete move just as much as moving a piece on the board.

The first line in Extra Move Chess's Post-Move section is

set mvs explode chr 59 thismove;

This line creates an array of all the moves made. It uses chr 59 to tell the explode function to split the string returned by thismove where semicolons appear.

The next line restores the position to what it was when it was stored in the Pre-Move section.

Some of the stuff that follows is peculiar to Extra Move Chess. The main thing to pay attention to is how it uses the elements of the mvs array to replay each individual move before testing its legality.

If you don't want to program the game as though it were a double move variant, then you could introduce the Joker to the board with an add move. This is the kind of move used in Pawn promotion. It uses the piece notation with a hyphen and a destination. Unlike a regular move, it does not include an origin space.