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 ]

Comments/Ratings for a Single Item

EarliestEarlier Reverse Order LaterLatest
Apothecary Chess-Classic. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
H. G. Muller wrote on Thu, Mar 26, 2020 09:57 AM UTC:

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

That is exactly what I disagre with. Checking power is defined as the ability to make an actual capture after the opponent passes his turn (thus giving the turn back to the owner of the checking piece).

So the question is really how the Joker must move after a turn pass, because such a turn pass cannot be assigned to any particular piece. Must it then also pass its turn, or does it retain the powers it had on the move before? This question is important to distinguish checkmate from stalemate.

For 'passing through check' turn passing plays no role, though. The King was already moving when it reached the square it aims to pass through. The logical approach is to evaluate the situation under the fiction that he would stop there, and then the last move would have been a King move. So I would say the Joker has to be assumed to move as a King in order to judge whether the King passed through its attack. Even when the ultimate rule for Joker movement after a complete castling would be that it should move like a Rook. (E.g. because castling according to FIDE rules must first move the King, and then the Rook, so the Rook would be the last moved piece.)


💡📝Aurelian Florea wrote on Thu, Mar 26, 2020 10:30 AM UTC:

HG,

Some interpretation could be on game by game basic and it's inventor should cover all details. I have not thought on everything, but the joker is definetly an interesting piece.

As you stated the rule :"Checking power is defined as the ability to make an actual capture after the opponent passes his turn (thus giving the turn back to the owner of the checking piece)." you agree with me when I had said that if the joker in unbostucted on the same diagonal with the king all the bishops friendly to the king are pinned.


H. G. Muller wrote on Thu, Mar 26, 2020 12:01 PM UTC:

Indeed, if there is a diagonal path from Joker to King, Bishops and Queens would be pinned.

If there is a diagonal path of a black Joker to f1 (say from d3), I would not think that this would forbid O-O, because it also doesn't forbid Kf1,

The tricky question is what to do when the Joker has a diagonal path do e1 (say from c3). Can white castle now, or is he in check, and consequently cannot? This again depends on how one imagines the Joker to move after a turn pass. And if he keeps his old move in that case, it depends on the previously moved piece.


💡📝Aurelian Florea wrote on Wed, May 6, 2020 07:17 AM UTC:

The two things than need doing to complete the preset for this game is the finishing rules (as there are different from many chess variants) and all things related to the joker. For the first I will forfeit any more development as this website cannot support the 5 types of results present here. For the second the behavior of the jester is beyond my game code programming abilities and hopefully someone can help sooner or later. Fergus, if you see this, you have said a while ago that you took a look at the problem but I see you are very busy now. Anyway the day will come when this will be done one way or the other. I think I can handle the placing of the joker, I mean the main problem is the movement of the piece.


💡📝Aurelian Florea wrote on Wed, May 6, 2020 07:19 AM UTC:

Becuuase I was asked to and, the rules have been anyway changed I will make some challenges with the non rules enforcing preset.


💡📝Aurelian Florea wrote on Sun, May 10, 2020 12:04 PM UTC:

I have corrected an omision. The king need not be in check in order to perform the special leap.


💡📝Aurelian Florea wrote on Sat, May 23, 2020 01:45 PM UTC:

I have added some clarifications regarding how the joker moves in the beginning and when imitating the enemy joker. They can be found at the end of the rules chapter.


🕸Fergus Duniho wrote on Sat, May 23, 2020 04:05 PM UTC:

First of all, you want to keep track of the last type of piece moved, and to start off with, it needs an initial default value.

set last_type_moved None;
def None false;

I'm thinking this could work for tracking the last piece moved:

  if != const alias $moved Joker:
    set last_type_moved const alias $moved;
  endif

This keeps track of the last piece moved using its codename, which matches the function name used for how it moves. But now I have another question. Suppose that the last piece moved was a Black Pawn. Would the White Joker be able to move as a Black Pawn or as a White Pawn?


💡📝Aurelian Florea wrote on Sat, May 23, 2020 04:13 PM UTC:

Would the White Joker be able to move as a Black Pawn or as a White Pawn? 

So far I've played whith the joker always imitating it's own pieces when they have different moves. So the white joker moves like a white pawn when imitating a black pawn. That makes sense to me more as generally speaking pawns advance, so should the joker. Maybe if you think about it a little you would feel quite awkward with your piece moving backwards. But when moving as a pawn the joker may not promote.

Thanks for your help! 


🕸Fergus Duniho wrote on Sat, May 23, 2020 05:15 PM UTC:

I think these should work. Where a piece has a different definition for each side, it will use that for the piece on its own side. The other code for setting last_piece_moved should be used with this. This variable should be initialised in the Pre-Game section, and it should be updated in each Post-Move section. I rewrote None to include the two arguments for origin and destination as other piece functions do. Since it's a contradiction, it will always return false.

  def None == #0 #1 and != #0 #1;
  def White_Joker fn str_replace "Black_" "White_" #last_piece_moved #0 #1;
  def Black_Joker fn str_replace "White_" "Black_" #last_piece_moved #0 #1;

🕸Fergus Duniho wrote on Sat, May 23, 2020 09:20 PM UTC:

Since I made White_Joker and Black_Joker separate pieces, use this code in White's Post-Move section:

if != const alias $moved White_Joker:
  set last_type_moved const alias $moved;
endif;

Use the same code for Black's but substitute Black_Joker for White_Joker.


💡📝Aurelian Florea wrote on Sun, May 24, 2020 04:34 AM UTC:

For now I use code which starts the joker on the board and not in hand. That to make it easier to isolate bugs.

But I'm getting the error:

The function '' has not been defined. Its arguments are e10 f2

It is at the for each where checks are tested. Could it be because of the special king?


🕸Fergus Duniho wrote on Sun, May 24, 2020 12:57 PM UTC:

That kind of error comes from not assigning a codename to a label you use for notation. It could be any piece. Make sure every piece in the game is fully defined.


💡📝Aurelian Florea wrote on Sun, May 24, 2020 01:33 PM UTC:

Yes, you are correct, it was the joker, but now I'm getting:

The function '#last_piece_moved' has not been defined. Its arguments are e10 f2

That happens in the checked subroutine at the line:

if fn const alias #piece #from var king

I had solved that one. There was a line where I wrote last_piece_moved instead of last_type_moved. 

 


💡📝Aurelian Florea wrote on Sun, May 24, 2020 01:51 PM UTC:

Now the error is ;

The function 'White_Joker-Range' has not been defined. Its arguments are e1


🕸Fergus Duniho wrote on Sun, May 24, 2020 02:09 PM UTC:

The function '#last_piece_moved' has not been defined. Its arguments are e10 f2

A variable appears as a string literal when it has not been defined. Make sure that last_piece_moved has a value assigned to it.

The function 'White_Joker-Range' has not been defined. Its arguments are e1

I didn't give you any code for defining this, but it needs to be defined.

def White_Joker-Range fn join str_replace "Black_" "White_" #last_piece_moved "-Range" #0;
def Black_Joker-Range fn join str_replace "White_" "Black_" #last_piece_moved "-Range" #0;

🕸Fergus Duniho wrote on Sun, May 24, 2020 02:14 PM UTC:

You may also need this:

  def None-Range ();

💡📝Aurelian Florea wrote on Sun, May 24, 2020 02:29 PM UTC:

You have wrote both last_piece_moved and last_type_moved. Are they different entities and I'm missing something or something else?


🕸Fergus Duniho wrote on Sun, May 24, 2020 03:07 PM UTC:

Stick to one or the other. I wasn't paying careful attention to what I already wrote.


💡📝Aurelian Florea wrote on Sun, May 24, 2020 04:38 PM UTC:

Ok!


💡📝Aurelian Florea wrote on Sun, May 24, 2020 05:11 PM UTC:

Now when I try to move the joker in a correct manner I get this:

You may not move your White Joker from e1 to f4.

I recognize this line. It is from the post move section and it prevents things like moving one's queen like a knight.

As no moves were displayed either, I think this could be from an error in updating the joker's identity.


🕸Fergus Duniho wrote on Sun, May 24, 2020 06:56 PM UTC:

Without seeing the game in which that is a move, I cannot tell what is going on.


💡📝Aurelian Florea wrote on Mon, May 25, 2020 03:02 AM UTC:

Any joker move would do.

Here: https://www.chessvariants.com/play/pbm/play.php?game=Apothecary+Chess+2&settings=Apothecary2working&submit=Edit

you can find the preset in question. Just move a white mameluke (the camel picture), and then try to move the joker.


🕸Fergus Duniho wrote on Mon, May 25, 2020 03:20 AM UTC:

I'm on my ereader right now and won't be back on my computer until tomorrow morning, which is even later than your morning. My main suggestion for now is to replace #last_type_piece with var last_type_piece in the four Joker* functions, because this sometimes makes a difference.


💡📝Aurelian Florea wrote on Mon, May 25, 2020 04:05 AM UTC:

It works!... I'm so happy!...


25 comments displayed

EarliestEarlier Reverse Order LaterLatest

Permalink to the exact comments currently displayed.