The Chess Variant Pages

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

Latest Ratings and Comments

Later Reverse Order EarlierEarliest
New Grand Apothecary Chess Error.[Subject Thread] [Add Response]
Aurelian Florea wrote on 2022-05-13 UTC

I have also created dummy berolina pawns and made the trick for them, too!

Aurelian Florea wrote on 2022-05-12 UTC

@HG, I had managed to do it despite some small setbacks. You know what's funny? This game also has berolina pawns!

H. G. Muller wrote on 2022-05-12 UTC

To add a new piece (say X / x)  to the GAME-code generated by the Play-Test applet you would have to add its move definitions at the end of the legdefs array, and supply functions X and x that return where in the legdefs array you have done that. Determining the latter is a bit of a pain; there are comments in the legdefs table that in parentheses indicate where the definition for each piece type starts, and you can then count the numbers appearing after that. Note that because the 'bare Pawn' is an asymmetric piece you would need different definitions for the white and the black one.

The move definition of a (white) FIDE Pawn is:

1  1  0  1     1
1  1  1  1     2
1  1 -1  1     2
1  1  0  2   16577 // pawn(1)
1  1  1  1     4
1  1 -1  1     4

The first 3 lines would suffice for the Shatranj Pawn; each line starts with the number of legs (always 1 here, as Pawns only have simple moves), the forward and sideway step size, the 'range' (= number of times the step can be repeated) and finally a code to indicate what the move can do (2 = capture, 1 = non-capture, e.p. capture = 4) and other details (like whether it is a virgin-only move). So the 4th line is the double-push, the 5th and 6th are the e.p. captures. For your bare Pawn you would leave these lines out. The final 0 indicates that the definition ends there, and that the moves that follow (if any) are for another piece. The move specifications for a piece should always end with such a 0.

In the example I copied this from the white Pawn was the first piece, so it starts at element 1 of legdefs. The special moves of that Pawn start at element 16 (as the three normal moves each take 5 numbers to describe). That means that just behind legdefs there is a line

def P cond #0 1 16;

that tells the code that the move definitions of piece P start at 1 (normal moves) and 16 (special moves = moves having side effect, such as creation of e.p. rights, or disappearance of pieces elsewhere). For pieces without special moves the latter number should always be 0. So for the bare Pawn you would have to add a line there like

def X cond #0 ... 0;

where the ... is the location in legdefs where the move definition starts.

Aurelian Florea wrote on 2022-05-12 UTC

HG, I meant directly in the game code. Remaking everything is not an option as the diagram designer cannot imitate partially. I'm trying to rewrite just the game code.

frogsandprincess[Subject Thread] [Add Response]
H. G. Muller wrote on 2022-05-05 UTC

Are you sure the diagram of the initial position is correct? There seem to be some Frogs missing, in an asymmetric way.

The Bishop might be weaker than the Elephant, and the Rook weaker than the Roo. I am pretty sure they would be weaker on 8x8.

The rules for game termination seem a bit illogical, and therefore needlessly complex. Easier would be to declare a loss when you do not have a Princess at the start of your turn, or a King at the end of your turn. (Combined with the usual checking rule that you are not allowed to do a move that causes an immediate loss.) I see no reason for making an exception for when the Princess is in check. For one, it is very unlikely that the King capture checks the Princess, so it won't affect the game much. And if you cannot solve the Princess check by converting a Frog when it should happen, you would just have lost.

what is play test applet[Subject Thread] [Add Response]
H. G. Muller wrote on 2022-05-05 UTC

You will find it in the alphabetical index under P. It can generate GAME code for rule enforcement / highlighting in Game Courier presets. But it has no provisions for uncommon rules like Frog kissing, or mixture of chess and shogi promotions. So it would be necessary to supplement it with code of your own.

wdtr2 wrote on 2022-05-05 UTC

Based on some comments in the past. I think there is a playtest applet, that can make something (code?) to show/generate legal moves. Does that exist? If yes, I have a blank board that I would like to add code so that it will show legal moves, and would like the playtest applet to make the legal moves/code.

frogsandprincess[Subject Thread] [Add Response]
wdtr2 wrote on 2022-05-05 UTC

I think this is ready to be published.

New Grand Apothecary Chess Error.[Subject Thread] [Add Response]
H. G. Muller wrote on 2022-05-04 UTC

Whether a piece can promote or not depends on its ranking in the piece list and the value of maxPromote. If you want a Pawn that cannot e.p. capture you just leave out the e mode. E.g. fmWfcF instead of fmWfceF.

Aurelian Florea wrote on 2022-05-04 UTC


I have asked you a question earlier on this post. May you take a look?

Design Contests[Subject Thread] [Add Response]
Samuel Trenholme wrote on 2022-04-29 UTC

I think another design contest would be nice. I like having the option of two different numbers; I could do something nice with 62 spaces if we need more submissions.

(This is the same Sam Trenholme who made Schoolbook a long time ago. I’ve given up on password recovery, so I’m just using a new account. As an aside, Gmail isn’t getting the verification emails.)

Fergus Duniho wrote on 2022-04-28 UTC

In the past, we had design contests featuring a number of spaces that corresponded to Hans Bodlaender's age. The last of these was 20 years ago when he was 42. Since then, we haven't done any more, because it is a lot of work. But maybe we should do some more since they do help encourage creativity. Since I'm younger than Hans, we could use my age to get some of the board sizes we've missed. I turned 55 on Saturday. It's also significant, given that Hans is from the Netherlands, and this site is physically located in the Netherlands, that the King of the Netherlands turned 55 today. And since we can't say for sure that we will be running a design contest in 7 years, we could do 55 and 62 together as a 55 or 62 space design contest.

New Grand Apothecary Chess Error.[Subject Thread] [Add Response]
Aurelian Florea wrote on 2022-04-22 UTC

@HG, Hello I want to use the dummy piece trick here the way you suggested a while ago. I don't know how to define the dummy pawn (a pawn with no capture, en passant or promotion).

EDIT: I mean without having to redo the diagram from scratch.

Can you help me?

Aurelian Florea wrote on 2022-03-22 UTC


H. G. Muller wrote on 2022-03-22 UTC

That is a consequence of pseudo-legal highlighting. The issue of moving into / out of / through check is what makes the difference between fully legal and pseudo-legal moves.

Aurelian Florea wrote on 2022-03-22 UTC

I verified this. You are correct!

Daniel Zacharias wrote on 2022-03-22 UTC

I think it just highlights the move as legal but doesn't let you actually do it.

Aurelian Florea wrote on 2022-03-21 UTC

It seems in the game code I can castle out of check and that should not happen.

Aurelian Florea wrote on 2022-03-18 UTC

Thanks, for that HG!

H. G. Muller wrote on 2022-03-18 UTC

I now fixed the Play-Test Applet's GAME-code generation such that it does use the correct way for specifying a move as imitation in the 'legdefs' table it generates.

One caveat: the trick the betza.txt include file uses for determining whether moves are legal during highlighting is not reliable when imitators are present. Because it determines the pinned pieces and attacked squares before the move. And the move will usually change what the imitator is immitating. So it is recommended to use highlighting of all pseudo-legal moves, by specifying

set pseudo 1;

at the end of the Pre-Game section.

Aurelian Florea wrote on 2022-03-17 UTC

Thanks HG!

H. G. Muller wrote on 2022-03-17 UTC

The GAME code in the betza.txt include file updates a variable 'toimitate' in its HandleMove routine, so that it will contain the ID of the piece to imitate on the next move. You could use the trick with the dummy piece also here. Say that its ID would be X or x, you could add this code in the Post-Move 1 section after the call to Handle move:

set toimitate cond == #toimitate p x #toimitate;

And in the Post-Move 2 section the same, but with capital P and X. The == #toimitate p tests whether the next piece to imitate would be a pawn, and if so, changes it to x, but otherwise leaves it as it was.

Aurelian Florea wrote on 2022-03-17 UTC

HG, Actually in the following it is not about an error. But I need to figure out how to edit the already done preset so that when the joker that imitates a pawns it inherits only it's basic properties, no double move, en-passant, promotion. The way I had done that earlier was to treat the pawn separately and when it is the case that it is the last piece for it I imitate a barren pawn piece. This worked fine. But I do not know how to do it here. The diagram will still not be able to do that and that is fine for a newcomer, the game is complicated enough as is, but for the game code I think I can do it, just guide me a bit to how.

Aurelian Florea wrote on 2022-03-13 UTC

Thanks, HG. I got it. Good luck!

H. G. Muller wrote on 2022-03-13 UTC

Each line in the legdefs array represents the leg of a move, and contains either 5 or 4 numbers. The first leg always contains 5 numbers, the first number indicating how many legs the move has. A zero there indicates no more moves follow for that piece.

The other 4 numbers are range (1 = leaper), x-step y-step and 'mode'. The latter describes what must occupy the target square for the leg to be possible.

Ranges smaller than 1 are of course meaningless, and those are used to indicate special cases that cannot be described as a (repeated) step. Such as imitation. These 'invalid' rages are recognized, and will cause execution of dedicated GAME code to handle the particular case. E.g. -1 would be used for the variable range of Pawns moving up to the board half. A -3 would cause calling of a user-supplied GAME code subroutine for generating the move.

I guess there is currently a mismatch between how the Interactive Diagram handles imitation (indicating it by some bit in the 'mode') and how the betza.txt GAME-code include file handles it (through range = -2). It would have been the task of the Play-Test Applet to make that translation when you make it generate GAME code. I cannot recall changing any of these. But I must have, if you say it worked before. In any case I should fix the Play-Test Applet to emit the -2 as range when the mode specifies imitation.

25 comments displayed

Later Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.