From 7cd0052b1919644b72b23993328bfc542a8525d3 Mon Sep 17 00:00:00 2001 From: H.G.Muller Date: Sun, 17 Jul 2016 23:06:19 +0200 Subject: [PATCH] Fix King leaving Palace in Xiangqi The rewrite of the move generator had overlooked this. --- moves.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/moves.c b/moves.c index 6a747a2..91f0072 100644 --- a/moves.c +++ b/moves.c @@ -986,6 +986,14 @@ GenPseudoLegal (Board board, int flags, MoveCallback callback, VOIDSTAR closure, case WhiteWazir: case BlackWazir: + if(gameInfo.variant == VariantXiangqi) { + int palace = (piece == WhiteWazir ? 1 : BOARD_HEIGHT-2); // Palace center + if(ff <= BOARD_WIDTH/2 && !SameColor(board[rf][ff+1], piece)) callback(board, flags, NormalMove, rf, ff, rf, ff+1, closure); + if(ff >= BOARD_WIDTH/2 && !SameColor(board[rf][ff-1], piece)) callback(board, flags, NormalMove, rf, ff, rf, ff-1, closure); + if(rf >= palace && !SameColor(board[rf-1][ff], piece)) callback(board, flags, NormalMove, rf, ff, rf-1, ff, closure); + if(rf <= palace && !SameColor(board[rf+1][ff], piece)) callback(board, flags, NormalMove, rf, ff, rf+1, ff, closure); + break; + } Wazir(board, flags, rf, ff, callback, closure); break; -- 1.7.0.4