The Chess Variant Pages
Custom Search




[ 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 ]

Comments/Ratings for a Single Item

Earlier Reverse Order LaterLatest
This item is a game information page
It belongs to categories: Orthodox chess, 
It was last modified on: 2020-01-30
 By Aurelian  Florea. Apothecary Chess-Classic. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
Aurelian Florea wrote on 2017-05-02 UTC

While playing a game against Greg Strong I figured out that a rule is not clear.

No pieces besides the initial ones can enter the bruhaha squares.

That's the new rule. For now I just put it in a comment when sufficient material is obtained I'll edit the article.


Aurelian Florea wrote on 2017-05-02 UTC

I have considered Greg Strong's input so I'm making a new rule (the one Greg proposed actually):

A player cannot move into a Brouhaha Square but may capture a piece already on it. Only the pieces initially placed there have special powers.

The second part is there to highlight that the special powers are given to help in the opening they don't go further to the possible capturer of the pieces initially placed on the brouhaha squares. Also remember that the special powers are just move abilities.


Kevin Pacey wrote on 2018-03-01 UTCExcellent ★★★★★

The apothecary games may have a somewhat steep learning curve, but it seems it's well worth the trouble, based on my limited experience.


Aurelian Florea wrote on 2020-01-30 UTC

@The Editors

These days I had tried to finalize the rules of my 2 apothecary games.

This should be the final version of this article pending review.


Aurelian Florea wrote on 2020-02-01 UTC

I hope you guys enjoy the new version of this game. For now, the rules enforcing and move displaying are an ongoing job, for me to do. After that I hope to see you soon!...


Aurelian Florea wrote on 2020-03-24 UTC

2 weeks ago you proposed the following code

def Joker fn const alias #lastpiece #0 #1;
def Joker-Range fn join const alias #lastpiece "-Range" #0;

 

for the joker piece. I got an "function has not been defined error" at the call in the checked function:

if fn const alias #piece #from var king

Also this line works fine with the other pices (I had tried it).


Fergus Duniho wrote on 2020-03-24 UTC

Give me a link to where you are using this code with a list of moves that result in this error message.


Fergus Duniho wrote on 2020-03-24 UTC

I was just getting the same kind of error while working on updating Grand Chess to use the fairychess include file. To fix it, I had to make sure my piece assignments were complete, and since I was using an alias for the Cardinal, I had to make sure that the alias operator got used in all the appropriate places.


Aurelian Florea wrote on 2020-03-24 UTC

While working for the presets for this game and it's twin, the thought of how the joker imitates a pawn moving ahead like the allied pawns, or backward like the enemy pawns. I always took it for granted that it moves like allied pawns, but it could go the other way around also. What do you guys think?


Greg Strong wrote on 2020-03-24 UTC

Allowing a pawn to move backward would be a very radical change and I doubt it would make a better game.  It certainly would be less of a "chess variant".


Aurelian Florea wrote on 2020-03-24 UTC

Sorry Greg, but I did not made myself clear enough. I meant the joker. If the joker should be allowed to move ahead when imitating a pawn, or backward. This was the quenstion. I always took it for granted that the imitation was to be ahead, but technically speaking a white joker imitates a black one who moves backwards. Letting it to move ahead (as it comes natural to me though) would be an exception the the main rule that the joker imitates enemy pieces. Technicalities aside I still think that moving ahead is better.


Fergus Duniho wrote on 2020-03-24 UTC

The problem was caused by using #lastpiece instead of var lastpiece. The former inserts the value into the line during preprocessing, which doesn't work out so well for null or empty values, while the latter looks it up while evaluating the expression. These will work instead.

def Joker fn const alias var lastpiece #0 #1;
def Joker-Range fn join const alias var lastpiece "-Range" #0;

One thing that has come up while examining your code is how you want the Joker to move after a piece that moves differently for each side, such as the Pawn. Should it move as the enemy Pawn, which is how it currently works, or as its own Pawn? For the latter, these should work:

def Joker fn const alias flipcase var lastpiece #0 #1;
def Joker-Range fn join const alias flipcase var lastpiece "-Range" #0;

While these changes eliminate the problem you were having, there is still a problem with actually moving the Joker piece. One problem is that the Joker doesn't properly handle pieces that use subroutines instead of functions. But even with pieces that just use functions, it is not working properly. I'm getting too tired to continue looking into this today. Maybe I'll make more progress tomorrow.


Greg Strong wrote on 2020-03-24 UTC

Sorry - yes, I wasn't thinking your question through.  Still, I think the Joker should forward when imitating a pawn.  If white moves a pawn two spaces, should the black joker (now imitating that pawn) be able to capture en passant?  If so, it needs to move forward (or things would be really strange.)


Greg Strong wrote on 2020-03-24 UTC

Other questions:

Say white moves a bishop.  Now black's joker could move like a bishop - but instead black moves a rook.  Now its white's move and he wants to castle, but he cannot castle if in check.  To decide if he is in check, does black's joker still attack like a bishop, or does it attack like a rook?  Or neither?

Argument for attacking like a bishop: white's joker immitates black's last move and black's bishop immitates white's last move.  Black moving only changes the move of white's joker.

Argument for attacking like a rook: any move changes the move of both jokers.  This is the easiest to program but I don't like it.

Argument for neither: white's joker moves like black's last move only when white is on the move.  After white moves, his joker has no attack power until black moves again.

It is also important to determine exactly when the change happens.  Say white wants to make a normal king move and black's joker still attacks as a bishop.  Does this mean that the white king cannot move onto the bishop's diagonal because that is moving into check?  Or has the fact that, as soon as white moves his king the black joker moves as a king, mean that the white king is not in check?


Fergus Duniho wrote on 2020-03-25 UTC

In my fork of the Apothecary Chess 1 preset, the problem I've currently come up against may be due to endless recursion. When I try moving the Joker, the script crashes. What I think is happening is that after the Joker moves, it runs code for the other Joker, and now that the value of lastpiece is j or J, the Joker function recursively calls itself again and again without ever exiting. I just tried one way of fixing this, but it didn't solve the problem. Since it's late, I will not continue with any more attempts tonight. I just wanted to share what I think the problem is.


Aurelian Florea wrote on 2020-03-25 UTC

First there is no castling in this game.

I realize I have to give more details regarding the joker. The rule is that it imitates the last move of the opponent. And this rule has that pawns issue.

On your question Greg. The switch of the imitated piece is when the move is completed. In this case the bishop move would be illegal because it places the black king in check.

About the en passant thing. This is something I have not thought properly. The philosophy behind this brings at least 2 cases.

1. the joker does not capture en passant ever as en passant is a property of a pawn and not a move. As I had decided that joker may not promote this should be the case.

2.  the joker may capture en passant at the 6th rank like any pawn.

I prefer 1 but I'd like a small comment.


H. G. Muller wrote on 2020-03-25 UTC

I always like the 'not castling through check' rule as a form of e.p. capture: the King makes a double step, and can then be taken by a capture-capable move to the square it passed through in the subsequent move. As exposing your King to capture is illegal, such a castling would be illegal.

In this interpretation it would be legal to castle over a square that was diagonally attacked by the Joker from a distance, as after the castling that Joker would no longer move like a Bishop, and thus not be able to execute the e.p. capture of the King. I am not sure how the Joker moves after castling: as a Rook, as a King, both or neither. The rules would have to specify that. If it would move as a King, then a black Joker on e2 would make white castling illegal, as that Joker could in the reply become a King and attack f1/d1. Basically the rule would become: the King cannot pass a square during castling that it could not legally move to.

It is always a tricky question whether a Joker can deliver check. In most positions this is not important, as most moves would alter the Joker's capabilities in a way that resolved the check. But it can be important to distinguish checkmate from stalemate. Basically the question boils down to how the Joker would move after a turn pass of the opponent, because the 'in-check' definition involves the fiction of a turn pass. Must it also pass a turn, or will it just keep the move it had on the turn before? In the former case the position w:Ke3, Je2 b:Ke1 would be a stalemate, in the latter case it might be a checkmate (if white black moved Ke1 on the move before).


Aurelian Florea wrote on 2020-03-25 UTC

The rule is that the joker moves like the last move of the opponent. This game does not have a castling but it will come to it in other games. Castling is generally considered a king move. There is a king may leap once a game rule. That it. I think the confusion related to when the loan of power ends not when it begins. That happens when the oppnent has just moved. I'm not sure I understand the qustions otherwise/


Fergus Duniho wrote on 2020-03-25 UTC

The rule is that the joker moves like the last move of the opponent.

As stated, that's too ambiguous. Here are some possible interpretations:

1. The Joker has the same powers of movement as the last piece the opponent moved, which is what I've been trying to program with my Joker function.

2. The Joker mostly has the same powers of movement as the last piece the opponent moved, but there are exceptions for particular pieces. For example, it might not be able to promote or castle.

3. The Joker is limited to the type of move of the opponent's last move. For example, if the opponent moved a Queen, diagonally, the Joker would be able to move diagonally, but not orthogonally.

4. The Joker is limited to the type and direction of the opponent's last move. For example, if the Queen moved vertically forward, the Joker could move vertically forward, but it could not move vertically backward, horizontally, or diagonally.

5. The Joker is limited to the type, direction, and distance of the opponent's last move. For example, if the Queen moved vertically forward 4 spaces, the Joker could move vertically forward up to four spaces.

6. The Joker is limited to the type, direction, and precise distance of the opponent's last move. For example, if the Queen moved vertically forward 4 spaces, the Joker could move vertically forward 4 spaces, no more and no less.


H. G. Muller wrote on 2020-03-25 UTC

I would say the borrowed power of the Joker ends after the player owning the Joker moved it, or moved something else. Because then it is no longer that players turn, and a Joker is not allowed to move in the opponent's turn. So during the opponent's turn it has no powers at all.


Fergus Duniho wrote on 2020-03-25 UTC

Because then it is no longer that players turn, and a Joker is not allowed to move in the opponent's turn.

That's true of every piece on the board.

So during the opponent's turn it has no powers at all.

But that's not true of other pieces. Other pieces retain checking power during the opponent's move.

I would imagine that the Joker retains whatever power it used to move until the opponent moves another piece, thereby giving it a different power of movement. For example, if the Joker moves as a Rook and checks the King, the King would be in check, and one way to remove that check would be to move a Bishop, which would change the Joker's powers of movement.


Aurelian Florea wrote on 2020-03-25 UTC

As I had said earlier the joker gains the power at the end of the opponent's move and retains it until the next time the opponent moves. I could have made myself not clear enough. So if the joker is unobstructed on the same diagonal like the enemy king it pins all bishops and queens the enemy has, because it would mean that the opponent has moved into check!

The power is almost in full (so Fergus in your question it is number 2). That is because the games could be quite imbalanced if a joker promotes to queen and a joker can easily move across the board compared to a pawn. Once again there is no castling in this game but some leaps for the unmoved king.


Greg Strong wrote on 2020-03-25 UTC

1. The Joker has the same powers of movement as the last piece the opponent moved, which is what I've been trying to program with my Joker function. [Emphasis mine]

To do that, wouldn't you need White_Joker and Black_Joker subroutines?  As I understand your code, a piece move changes the move of both jokers, but perhaps you've changed it from the snippit you posted or I don't fully understand it.


Fergus Duniho wrote on 2020-03-25 UTC

One thing I just thought of is that the regular stalemated subroutine will not work for a game with the Joker. To factor in how moving a particular piece change's the checking power of the Joker, it should regulary update the value of lastpiece.

While looking up the correct name of the variable, I saw that I had used the wrong variable name in some places last night. When I corrected that, I was able to move the Joker in my fork of the Apothecary Chess 1 preset.

There are still more things to be done, but not right away.


25 comments displayed

Earlier Reverse Order LaterLatest

Permalink to the exact comments currently displayed.