Comments by thomas
I propose the theme of a draw- and tie-free chess.
If the mechanism of a game allows repetitions, one needs a rule to deal with them, and players have to keep track of the positions occuring in the game. This is not always easy. In an endgame with Queens, e.g., one might chase the opponent's King several times round the board. Then have fun remembering all the previous positions, not to overlook a repetition.
Also, if repetitions are possible, this usually means that the game can last an exponential number of moves. As an upper bound for the game length, one can count all legal positions with the given pieces on the board (with pawns remaining where they are), and the number is usually gigantic. To break such ties, the artificial and ugly 50-moves-rule (or something similar) is needed.
So I find it desirable to invent a Chess variant with a playing mechanism which can't lead to repetitions. A simple example would be that pieces can move only forward, as in the game of Breakthrough.
Another theme idea: having unequal armies on the light and the dark squares.
A player might have pieces of type A, which can move only on light squares, and pieces of type B, which move on the dark squares.
The opponent may have the same types and numbers of pieces, so that the armies are equal over all. The opponent might also have his A-pieces on light and B-pieces on dark squares, so that the A-pieces fight each other, and also the B pieces, but an A piece can never meet a B-piece. It's also possible to make the setup vice versa, so that on any square color the A-pieces of one side fight the B-pieces of the other.
This variant I find very interesting. Additional idea: let the pieces make a non-capturing move laterally or backwards with demoting the piece to the next lower kind, e.g. in the order queen -> rook -> bishop -> knight -> pawn. This is buying more time, and also combinations may include the demotion of a piece to alter its way of moving. The king is maybe too vulnerable in these variants. A defended Queen on any of the three squares in front of the King mates, and also a defended rook directly in front of it. Three pawns can also mate. One might add the rule that the king may also move laterally or backwards when attacked. I think this does not lead to cycles, but if there are Rooks and Nightriders, a cycle is possible: white: King e2, Rook e1 black: King e5, Nightrider f7 1. Kd3+ Kd6+ 2. Ke2 Ke5
I forgot one thing: if the pieces can move backwards and demote, one must change the pawn-promotion, or the game is no longer cycle-free. One may e.g. promote pawns to a 'lazy queen', which is not moving to empty squares but only capturing like a queen (or maybe a lazy amazon, capturing like a knight also).
1. sorry, I forgot to enter my name in the last post 2. A lazy queen (or amazon) captures like a queen (the amazon like a knight also) but cannot move to an empty square. Somehow I like the idea that demoting ends with some 'lazy' piece, which only captures. But there are other possibilities too, of course. If this were a modification or a different game, depends on the pont of view, I think. I just want to give some ideas, maybe leading to a new game. The coding of demotion can be done so (shown with a bishop which demotes to knight): (define slide ;;normal sliding move ( $1 (while empty? add $1) (verify enemy?) add ) ) (define slidebishop ( $1 (while empty? (add Knight) $1) ;; demote on empty square (verify enemy?) add ;; dont demote when capturing ) ) .... (piece (name Bishop) (image White '...' Black '...') (moves (slide nw) (slide ne) (slidebishop sw) (slidebishop se) ) )
I have written two presets: http://play.chessvariants.org/pbm/play.php?game%3DBreakthrough%26settings%3DBreakthrough http://play.chessvariants.org/pbm/play.php?game%3DSquirrel+Chess%26settings%3DSquirrelChess1 May I ask some questions about Game Courier / GAME code: 1. I observe that I can't enter comments starting with '//' in the Pre-Game part. I wrote: // comment setsystem maxmove 2; ... And I receive an error message: Syntax Error on line 0 // comment setsystem maxmove 2 is not a valid expression, because // is not a recognized piece, coordinate, command, or subroutine. Why is this? 2. What happens if I edit and save a preset if there are already players using it, e.g. when I remove a bug or add notification for mate / stalemate. Can this cause problems? 3. What happens if an operator needs more operands than are on the stack, or if there are two or more values left on the stack after evaluating an expression, or if an operator is given an operand with a senseless type, e.g.: set ep false; ... if equal where #ep 0 1 a3; ... endif; Are there rules how such cases are handled, or does the program behave in an undefined way? 4. am I right that a board position (like 'a4') is of type 'string', and also a piece type like 'n' or 'K'? Or are these special types on their own?
Thanks for your explanations! I have suspected the problem with ep == false. I should correct my Squirrel Chess preset due to this.
I have read about a different variant of Atomic Chess in the book 'Alternatives Schach' by Lars Döring (german): After a capture, the capturing piece and all pieces on the squares orthogonally or diagonally adjacent to it are also removed, but with the exception of the kings. A king may capture without being removed, and is not removed when on a square adjacent to the capture. A move may never put the King of the moving side into attack, neither before nor after removing of pieces. So a king may never capture a defended piece, even if the defending piece would also be removed. In this variant, the initial advantage of white is much smaller.
I want to restrict user input so: setsystem maxmove 2; ban commands allmoves; allow moves 1 moves 2 captures 1 promotions 2; The purpose is to allow entering a generalized castling move, examples: e1-d1;a1-e1 e1-b1;a1-d1 But then the user might enter something like c1-f7;d2-d4 , the first part being illegal. The preset should reject this move, but it is difficult, because the system variables only reflect the (legal) second part d2-d4 : old = @ origin = d2 dest = d4 moved = P Is it possible to get info about the first move-part, or at least the info that the user has entered two parts?
1. The description doesn't make it clear that the center of a piece can be on one of the side rows (a, t, 1, 20). This means that Black may start the game with the move a3-b3. See http://www.archim.org.uk/eureka/53/gess.html. 2. I don't know if it is allowed to move the center of a piece onto a side row. Is black allowed to start a game with r3-t3, capturing four of his stones? Or can a piece move only so far as to move the direction stone onto a side row?
Sorry I have to pester you again: I'm writing a preset for Wildebeest Chess. Now I have a strange bug in the code which I can't understand. I have boiled it down to the following little procedure: sub test; my i; set i origin; do: if != space #i @: die X.; endif; set i where #i 0 1; loop until == #i dest; endsub; This is defined in the pre-Game part. In the Post-Move-1 part I call the procedure: gosub test; Then I enter a pawn move, e.g. f2-f5 and I get the error message 'misplaced endsub' at the line number where the procedure 'test' ends. Why is this?
The link to the preset: http://play.chessvariants.org/pbm/play.php?game%3DWildebeest+Chess%26settings%3DWildebeest+Chess+with+rules The error occurs in the procedure 'checkkcastl' in the pre-game part. Near the end there is a do-until loop that checks if the king crosses attacked squares. This loop seems to cause the error. The error occurs when legally castling with the king over 2 or more squares (entered as a king's move, e.g. f1-h1). Then the said loop is not ended by the 'die' command but by the until-condition, and the error message is produced. If I castle over an attacked square, the 'die' ends the loop, and it works correctly.
Thank you! I'll look at the chess2 file and see how I can use it. I started to program Wildebeest Chess because it is a good practice in GAME Code and because there is not yet a preset with rule enforcement (at least I have found none).
I have looked at 'chess2.txt' as you recommended, and rewrote my Squirrel Chess preset to use it (because this was easier than Wildebeest Chess). Also I have experimented and looked at some other presets. Thereby I have found some bugs: The operator sign calculates the sign of the operand decremented by 1. In the preset for orthodox chess (and maybe in some others too) it is not tested if a rook to castle with has been captured. One should add unsetflag dest; at an appropriate place in the code. In the file 'chess2.txt': In function p: checkatwostep must have the arguments 0 -1 0 -1; Functions p and P allow captures to occupied squares only (except enpassant). Thus they are not suited to test if an empty square is attacked, and the subroutine 'castle' doesn't work correctly. It calls 'checked' to test for castling out of or through check, which in turn uses p and P. In sub stalemated: If a royal pawn captures en-passant, the captured pawn isn't removed. (also, 'store' and 'restore' are called more often than necessary.) In sub 'enpassant': The line set #pe join filename #to filename #from; should be replaced by local pe; set pe join filename #to rankname #from; In sub castle: near the end there should be 'subargs' instead of 'subarg'. Also I have some questions: Is there a difference between numbers and strings, or are numbers just strings consisting of digits only? In the following code: set wpr 2; if == rankname #from #wpr: ... endif; either rankname gives a number if the ranks are labelled with numbers, or numbers are strings, or numbers are implicitly converted to strings (or vice versa). Wouldn't it be reasonable to check the legality of the last move only? In all presets I have seen the legality of every move is checked, but if a preset rejects all illegal moves, all moves except maybe the last must be legal, if I don't overlook something. BTW: I plan to write a 'chess3.txt' include file which is more flexible and general, first to practice writing GAME Code and second because it might be of use for you and others. Before I begin, I should know if it can be a mistake to thest the legality of the last move only. This would improve efficiency in long games.
Thank you for the fixes and explanations. But you have overlooked that in sub 'enpassant' there is twice 'filename' used. It should be 'filename #to rankname #from'. To check if any piece or any empty square is attacked, one could use the following subroutine: // This subroutine checks whether 'square' is attacked by the given side: sub attacked square bywhite: local from piece pawn pdir; if #bywhite: def enemies onlyupper; set pawn P; set pdir 1; else: def enemies onlylower; set pawn p; set pdir -1; endif; for (from piece) fn enemies: if == #piece #pawn: if checkaleap #from #square 1 #pdir or checkaleap #from #square -1 #pdir: return #from; endif; elseif fn #piece #from #square: return #from; endif; next; return false; endsub;
Here I am again with one more bug ;) In file chess2.txt the 'stalemated' subroutine doesn't recognise en passant captures. I tested this with my Squirrel chess preset. In a position where the only legal move is an ep capture, it says 'stalemate'. By experimenting I found that it should work if in the functions P and p '#ep' is replaced by 'var ep'. It seems that '#' inside a function inserts the value of the variable at the time the function is defined, while 'var' is reading the value when the function is executed. But this seems not to be so for subroutines. Here # and var have the same effect (at least I haven't observed a difference yet).
One might add a one-space orthogonal step to the Knight (Wazir Knight) and a one-space diagonal step to the Camel (Wizard from Omega Chess), and both moves to the Wildebeest (Wildebeest plus King). This preserves the symmetry between the riding and leaping pieces, and now the King is integrated into it, having the moves which are shared by Queen and Wildebeest. And the stronger pieces can be seen as a second advantage, if one feels that the standard pieces are relatively weak for the big board.
I suggest to use a pie rule: The side without king is made stronger (like in the first game where black has a queen for the king), and one player sets the maximal number of moves to mate, then the other player chooses a side.
I'm done with four presets yet. They are automated and with rule-enforcement and detect the end of a game (but not by threefold repetition or 50 moves rule). I have tested them and they seem to be bugfree. Maybe you want to include them into the 'Games for Game Courier' list. Breakthrough: http://play.chessvariants.org/pbm/play.php?game%3DBreakthrough%26settings%3DBreakthrough Wildebeest Chess: http://play.chessvariants.org/pbm/play.php?game%3DWildebeest+Chess%26settings%3DWildebeest+Chess+with+rules Gess: http://play.chessvariants.org/pbm/play.php?game%3DGess%26settings%3DGess+with+rules Playing gess is a nuisance without an automated preset, so I wrote one. To make the point-and-click movement usable, the preset expects that the origin and destination coordinates of the direction stone are entered. This is uncommon, normally a move is denoted by the coordinates of the center of a piece (= 3x3 area containing a stone in the direction of movement). Squirrel Chess: http://play.chessvariants.org/pbm/play.php?game%3DSquirrel+Chess%26settings%3DSquirrelChess1 This variant I have made up myself. The difference to orthochess is only the 9x9 board and every side has an extra pawn and a squirrel which leaps two squares orthogonally or diagonally or like a knight (as described in the piececlopedia). Pawns promote to squirrels also. BTW: how can I uncheck 'exclude pieces not in setup' when editing a preset? Somehow it doesn't work. Is it possible to select some pieces out of a piece set and assign them names entirely of upper- or lowercase letters, so that 'isupper' and 'islower' can be used to identify pieces of a side?
This is good to know. But can someone please tell me how it is done? I can't log in. I just went to the 'Games for Game Courier' page, clicked 'edit' at the bottom right of the page (is this the right way to add more presets, BTW?), and after entering my username and PW, the login window just appeared again with my PW deleted. I used the same data as when saving a preset. Maybe it's because I'm not a member nor a contributor yet. What should I do next?
22 comments displayed
Permalink to the exact comments currently displayed.