isKingMeet method
is king meet 老将是否照面
Implementation
bool isKingMeet(int team) {
ChessPos? kPos = fen.find(team == 0 ? 'K' : 'k');
if (kPos == null) {
// 老将没了
return true;
}
// 是否与对方老将同列,并且中间无子
ChessPos? enemyKing = fen.find(team == 0 ? 'k' : 'K');
if (enemyKing != null && kPos.x == enemyKing.x) {
final isMax = enemyKing.y > kPos.y;
List<ChessItem> items = fen.findByCol(
kPos.x,
isMax ? kPos.y : enemyKing.y,
isMax ? enemyKing.y : kPos.y,
);
// 原则上没有小于2的情况,这里统一按照面计算
if (items.length <= 2) {
return true;
}
}
return false;
}