Esempio n. 1
0
void Board8x8::generateCandidateMoves(MoveList & moveList)
{
  for (uint index = 0; index < 64; index++) {
    uint row = index >> 3;
    uint col = index & 7;

    PieceType pieceType = mPieceType[index];
    if (mWhiteToMove) {
      switch (pieceType) {
      case WhitePawn:
        generateWhitePawnMoves(row, col, moveList);
        break;
      case WhiteKnight:
        generateKnightMoves(row, col, moveList);
        break;
      case WhiteBishop:
        generateBishopMoves(row, col, moveList);
        break;
      case WhiteRook:
        generateRookMoves(row, col, moveList);
        break;
      case WhiteQueen:
        generateBishopMoves(row, col, moveList);
        generateRookMoves(row, col, moveList);
        break;
      case WhiteKing:
        generateKingMoves(row, col, moveList);
        break;
      default:
        break;
      }
    }
    else {
      switch (pieceType) {
      case BlackPawn:
        generateBlackPawnMoves(row, col, moveList);
        break;
      case BlackKnight:
        generateKnightMoves(row, col, moveList);
        break;
      case BlackBishop:
        generateBishopMoves(row, col, moveList);
        break;
      case BlackRook:
        generateRookMoves(row, col, moveList);
        break;
      case BlackQueen:
        generateBishopMoves(row, col, moveList);
        generateRookMoves(row, col, moveList);
        break;
      case BlackKing:
        generateKingMoves(row, col, moveList);
        break;
      default:
        break;
      }
    }
  }
}
Esempio n. 2
0
void ChessBoard::generateMoves(int sq, Moves& mvs)
{
    int pc = m_data[sq];
    if (!pc) return;
    switch (pieceType(pc)) {
    case PIECE_KING:
        generateKingMoves(*this, sq, mvs);
        break;
    case PIECE_ADVISOR:
        generateAdvisorMoves(*this, sq, mvs);
        break;
    case PIECE_BISHOP:
        generateBishopMoves(*this, sq, mvs);
        break;
    case PIECE_KNIGHT:
        generateKnightMoves(*this, sq, mvs);
        break;
    case PIECE_ROOK:
        generateRookMoves(*this, sq, mvs);
        break;
    case PIECE_CANNON:
        generateCannonMoves(*this, sq, mvs);
        break;
    case PIECE_PAWN:
        generatePawnMoves(*this, sq, mvs);
        break;

    }
}
Esempio n. 3
0
void Board8x8::generateCandidateMoves(uint row, uint col, MoveList & moveList)
{
  PieceType pieceType = getPieceType(row, col);
  if (pieceType == NoPiece)
    return;

  switch (pieceType) {
  case WhitePawn:
    generateWhitePawnMoves(row, col, moveList);
    break;
  case BlackPawn:
    generateBlackPawnMoves(row, col, moveList);
    break;
  case WhiteKnight:
  case BlackKnight:
    generateKnightMoves(row, col, moveList);
    break;
  case WhiteBishop:
  case BlackBishop:
    generateBishopMoves(row, col, moveList);
    break;
  case WhiteRook:
  case BlackRook:
    generateRookMoves(row, col, moveList);
    break;
  case WhiteQueen:
  case BlackQueen:
    generateBishopMoves(row, col, moveList);
    generateRookMoves(row, col, moveList);
    break;
  case WhiteKing:
  case BlackKing:
    generateKingMoves(row, col, moveList);
    break;
  default:
    break;
  }
}
Esempio n. 4
0
void Board8x8::generateQueenMoves(uint row, uint col, MoveList & moveList)
{
  generateBishopMoves(row, col, moveList);
  generateRookMoves(row, col, moveList);
}