[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Check out Janggi (Korean Chess), our featured variant for December, 2024.
Check out Janggi (Korean Chess), our featured variant for December, 2024.
A freedrop will change the values of $origin, $dest, and $old. It will set $origin to false. A suicide is treated as a move to the null space. This is a space with an empty string for a coordinate. The important point is that it changes all the same values as a regular move does. So, doing a freedrop or a suicide on the second move is going to erase information about the first move. Promotions are special, because they do not erase information about the first move.
There is not. I suppose you could copy the board position, then check the hamming distance with the current position to see how many positions have changed.
No, the Post-Move code is run after the completion of all the moves.
As I just mentioned, it doesn't work that way. It plays all moves and fills in the variables with data on the last move. However, a promotion does not count as a full move. So, it does not change the data already filled in for the previous move.
The variables that get filled in after a move are most useful when you are not making a series of different moves. For your purposes, it would be better to check each move individually. To do this, store the position in the Pre-Move code, restore it in the Post-Move code, and then make an array of the moves by using explode on $thismove, and go through them one-by-one. This is what multi-move variants do.
But if you do it this way, you may have to code some things differently, such as promotion. You will also have the choice of evaluating a move before playing it or after playing it. Pick one and stick to it consistently.