[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Check out Janggi (Korean Chess), our featured variant for November, 2024.
Check out Janggi (Korean Chess), our featured variant for November, 2024.
@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.