isKingMeet method

bool isKingMeet(
  1. int team
)

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;
}