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

Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Aug 29, 2020 02:18 AM UTC in reply to H. G. Muller from Fri Aug 21 11:13 AM:

BTW, since you seem to synthesize the move texts from the square pairs given to setlegal, which you will have to do for backward compatibility, it might be better to extend the capabilities of setlegal to also accept multi-leg moves, so that there is a unified way to submit moves for highlighting. E.g. you could add to the specs that when the (only) argument of setlegal is an array, it will treat it as a multi-leg move. (You can still distinguish that from the other formats, which always have to start with a square.) The array could then be interpreted as a sequence of (from, to) pairs for each of the legs, from which a move text would be generated by concatenating them, using hyphens and semiclons as separators where appropriate. E.g.

setlegal (c6 e5 e5 d4 Q dest);
setlegal (e2 e7 @ e8 N e6);

I have extended setlegal to treat an initial array and any subsequent array after a first array as a multi-part move. So far, this works only with coordinates, not with pieces. Also, it specifies a path. So, setlegal (c6 e5 d4) would result in "[piece notation] c6-e5; e5-d4". I might change it to something simpler, like what you're suggesting, since it would make it easier to include pieces.

I have also extended it to add strings to the $extralegal array. This lets you construct any legal move you like as a string. Now that variables can be included in strings when enclosed in braces, this should prove an easy way to add legal moves.

Finally, legal moves are now being validated. After all legal moves have been assigned, they are run through a filter to make sure they are well-formed.