Check out Janggi (Korean Chess), our featured variant for November, 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

Apothecary Chess-Modern. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
💡📝Aurelian Florea wrote on Wed, Jun 17, 2020 07:25 AM UTC:

@Fergus,

I'm glad to say I have managed to make it work.

Here is the code that does well:

if flag f2 and moved == K:
move $dest $origin; // Temporarily undo King move
  if sub checked $origin and not checkleap $origin $dest 1 0 or checkleap $origin $dest 1 1:
    die A King may not castle out of check.;
  endif;
move $origin $dest;
endif;

if == moved K: 
unsetflag f2;
set Kpos $dest;
endif;

if sub checked var Kpos:
  die You may not move into check.;
endif;

Later edit:

But althought the code works for white it does not work for black well, and also there is a weird side effect where a queen move on the first square generates the a king may not castle out of check error. So there is still work to do despite the progress.

2nd edit:

I think I have found the bug that generates both problems. It is the first if :

if flag f2 and moved == K:

this is either always true or always false if I move the == ahead of moved but I cannot get it to work in the intended way which is enter the condition when flag f2 of set and the K has just been moved.