Check out Symmetric Chess, our featured variant for March, 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

Games on Game Courier. A listing of Chess variants for Game Courier, ranked by number of times played.[All Comments] [Add Comment or Rating]
H. G. Muller wrote on Sun, Nov 24, 2019 10:05 PM UTC:

@Fergus: I definitely agree that for having sufficient generality it is necessary to be able to resort to some Turing-complete programming language. But a quite large fraction of CVs would not do anything that is not standard (in the sense that hundreds of other CVs would not do exactly the same). If exposing those who want to create presets to the code for such standard tasks discourages them, it would be better not to do that. And it would not be that difficult to achieve that.

One solution could be to reserve the code edits in the preset Edit form only for enforcing / implementing non-standard rules (and perhaps show them only on request, after ticking a checkbox that you want them). And have the code for the very common tasks, such as forbidding capture of own pieces, testing for check / stalemate / checkmate, 50-move draw, repetition draw be added automatically when the user requests this through ticking a checkbox, (e.g. "can expose royal to capture") selecting from a drop-down menu (e.g. "stalemating the opponent wins / draws / loses / is ignored") or typing a number in an otherwise empty text entry (e.g. declare draw when the same position is repeated .... times"). Untouched squares can be remembered for the entire board as a standard action of the basic system; this never hurts, and castling or special rules that require virginity could use them or ignore them as they want.

Most of the time the user would simply select the rules he wants from the combo-boxes, and never have to see the code this results in. The initial settings of these controls on creation of an entirely new preset could be those of normal Chess, so that in most cases the user would not even have to change them, but can just click 'OK' after having selected board and pieces. Only when a rule is not covered by a standard option (e.g. the counting rules for Makruk instead of the usual 50-move rule) the user would have to provide his own code for it, after deselecting the standard rule.

A simpler way to implement this would be to defer all handling of the standard rules such as mate testing to the basic system, but make its execution there conditional, subject to flags or numeric variables. The rule selection of the user would then only have to result in setting of those variables to the selected value at the start of the game.

Note that when I talk about 'default' code I don't mean code that would always be present or run unconditionally, but code that would be added / enabled unless the user decides he wants to provide something different. Where he should always have the option of having that something be nothing. Just allow exposing to check, capture of your own pieces, ignore mates, never declare draw etc. A non-rule-enforcing preset is the same as a rule-enforcing preset for a game without rules...