Ejemplo n.º 1
0
        /// <summary>
        /// ChessPiece Constructor
        /// </summary>
        /// <param name="aPieceColor"></param>
        /// <param name="aPieceType"></param>
        /// <param name="aChessSquare"></param>
        internal ChessPiece(EnumPieceColor aPieceColor, EnumPieceType aPieceType, ChessSquare aChessSquare)
        {
            chessPieceColor = aPieceColor;
            chessPieceType = aPieceType;
            chessPieceID = (EnumPieceID)((int)chessPieceColor + (int)chessPieceType);

            chessSquare = aChessSquare;
            EnumSquareID sid = chessSquare.GetSquareID();
            ChessImageConstants.parserChessBoardSquares[sid] = chessPieceID;

            isEnabled = true;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// ChessPiece Constructor
        /// </summary>
        /// <param name="aPieceColor"></param>
        /// <param name="aPieceType"></param>
        /// <param name="aChessSquare"></param>
        internal ChessPiece(EnumPieceColor aPieceColor, EnumPieceType aPieceType, ChessSquare aChessSquare)
        {
            chessPieceColor = aPieceColor;
            chessPieceType = aPieceType;
            chessPieceID = (EnumPieceID)((int)chessPieceColor + (int)chessPieceType);

            chessSquare = aChessSquare;
            EnumSquareID sid = chessSquare.GetSquareID();
            ChessImageConstants.parserChessBoardSquares[sid] = chessPieceID;

            isCastlingPossible = ((aPieceType == EnumPieceType.King) || ((aPieceType == EnumPieceType.Rook)));
            isEnabled = true;  // TODO was false
        }
        /// <summary>
        /// GetLocationCalculator
        /// </summary>
        /// <param name="chessPieceType"></param>
        /// <param name="aChessPlayer"></param>
        /// <returns>ChessLocationCalculator</returns>
        internal ChessLocationCalculator GetLocationCalculator(EnumPieceType chessPieceType, ChessPlayer aChessPlayer)
        {
            switch(chessPieceType)
            {
                case EnumPieceType.Pawn:
                {
                    if (pawnCalculator == null)
                        pawnCalculator = new ChessLocationCalculatorPawn(chessBoard);

                    pawnCalculator.SetCurrentPlayer(aChessPlayer);

                    return pawnCalculator;
                }
                case EnumPieceType.Rook:
                {
                    if (rookCalculator == null)
                        rookCalculator = new ChessLocationCalculatorRook(chessBoard);

                    return rookCalculator;
                }
                case EnumPieceType.Knight:
                {
                    if (knightCalculator == null)
                        knightCalculator = new ChessLocationCalculatorKnight(chessBoard);

                    return knightCalculator;
                }
                case EnumPieceType.Bishop:
                {
                    if (bishopCalculator == null)
                        bishopCalculator = new ChessLocationCalculatorBishop(chessBoard);

                    return bishopCalculator;
                }
                case EnumPieceType.Queen:
                {
                    if (queenCalculator == null)
                        queenCalculator = new ChessLocationCalculatorQueen(chessBoard);

                    return queenCalculator;
                }
                case EnumPieceType.King:
                {
                    if (kingCalculator == null)
                        kingCalculator = new ChessLocationCalculatorKing(chessBoard);

                    return kingCalculator;
                }
            }
            throw (new Exception("LocationCalculatorFactory.GetLocationCalculator : Invalid Chess Piece Type"));
        }
Ejemplo n.º 4
0
    // Static Functions
    /// <summary>
    /// Returns the movement type based on specified
    /// </summary>
    /// <param name="_enumPiece"> The movement of the piece type to be retrieved </param>
    /// <returns> Returns an array of movements </returns>
    public static int[,] GetMovementType(EnumPieceType _enumPiece)
    {
        switch (_enumPiece)
        {
        case EnumPieceType.Bishop: return(msarr2_nBishop);

        case EnumPieceType.King: return(msarr2_nKing);

        case EnumPieceType.Knight: return(msarr2_nKnight);

        case EnumPieceType.Rook: return(msarr2_nRook);

        default: return(null);
        }
    }
        /// <summary>
        /// GetChessPieceRectangle by type and color 
        /// </summary>
        /// <param name="aPieceType"></param>
        /// <param name="aPieceColor"></param>
        /// <returns>ChessPieceRectangle</returns>
        public ChessPieceRectangle GetChessPieceRectangle(EnumPieceType aPieceType, EnumPieceColor aPieceColor)
        {
            switch(aPieceType)
            {
                case EnumPieceType.Pawn:
                     if (aPieceColor == EnumPieceColor.White)
                         return whitePawnRectangle;
                    else
                         return blackPawnRectangle;

                case EnumPieceType.Rook:
                    if (aPieceColor == EnumPieceColor.White)
                        return whiteRookRectangle;
                    else
                        return blackRookRectangle;

                case EnumPieceType.Knight:
                    if (aPieceColor == EnumPieceColor.White)
                        return whiteKnightRectangle;
                    else
                        return blackKnightRectangle;

                case EnumPieceType.Bishop:
                    if (aPieceColor == EnumPieceColor.White)
                        return whiteBishopRectangle;
                    else
                        return blackBishopRectangle;

                case EnumPieceType.Queen:
                    if (aPieceColor == EnumPieceColor.White)
                        return whiteQueenRectangle;
                    else
                        return blackQueenRectangle;

                case EnumPieceType.King:
                    if (aPieceColor == EnumPieceColor.White)
                        return whiteKingRectangle;
                    else
                        return blackKingRectangle;

                case EnumPieceType.None:
                    return null;
            }

            throw( new Exception("ChessPieceFactory.GetChessPieceRectangle : Unknown EnumPieceType") );
        }
Ejemplo n.º 6
0
        /// <summary>
        /// ChessPiece Constructor
        /// </summary>
        /// <param name="aChessPieceID"></param>
        internal ChessPiece(EnumPieceID aChessPieceID, ChessSquare aChessSquare)
        {
            chessSquare = aChessSquare;

            if (aChessPieceID == EnumPieceID.BlackKing)
            {
                chessPieceType = EnumPieceType.King;
                chessPieceColor = EnumPieceColor.Black;
            }
            else if (aChessPieceID == EnumPieceID.WhiteKing)
            {
                chessPieceType = EnumPieceType.King;
                chessPieceColor = EnumPieceColor.White;
            }

            chessPieceID = aChessPieceID;
            isEnabled = false;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// ChessPiece Constructor
        /// </summary>
        /// <param name="aChessPieceID"></param>
        internal ChessPiece(EnumPieceID aChessPieceID, ChessSquare aChessSquare)
        {
            chessSquare = aChessSquare;

            if (aChessPieceID == EnumPieceID.BlackKing)
            {
                chessPieceType = EnumPieceType.King;
                chessPieceColor = EnumPieceColor.Black;
            }
            else if (aChessPieceID == EnumPieceID.WhiteKing)
            {
                chessPieceType = EnumPieceType.King;
                chessPieceColor = EnumPieceColor.White;
            }

            chessPieceID = aChessPieceID;

            isCastlingPossible = ((chessPieceType == EnumPieceType.King) || ((chessPieceType == EnumPieceType.Rook)));

            isEnabled = false;
        }
Ejemplo n.º 8
0
        /// <summary>
        /// CreateChessPiece by square piece type and piece color
        /// </summary>
        /// <param name="aChessSquare"></param>
        /// <param name="aChessPieceType"></param>
        /// <param name="aChessPieceColor"></param>
        /// <returns>ChessPiece</returns>
        private ChessPiece CreateChessPiece(ChessSquare aChessSquare, EnumPieceType aChessPieceType, EnumPieceColor aChessPieceColor)
        {
            ChessPiece chessPiece = new ChessPiece(aChessPieceColor, aChessPieceType, aChessSquare);
            EnumSquareID squareID = aChessSquare.GetSquareID();

            Point aLocation = new Point(aChessSquare.GetStartLocation().X + ChessImageConstants.ChessPieceLeft,
                aChessSquare.GetStartLocation().Y + ChessImageConstants.ChessPieceTop);

            chessPiece.SetStartLocation(aLocation);
            chessPiece.SetChessSquare(aChessSquare);

            aChessSquare.SetChessPiece(chessPiece);

            if (aChessPieceColor == EnumPieceColor.White)
            {
                whitePieceList.Add(chessPiece);
            }
            else
            {
                blackPieceList.Add(chessPiece);
            }
            return chessPiece;
        }
Ejemplo n.º 9
0
 public override void ClearSpace()
 {
     PlayerOwns  = 0;
     PlayerPiece = EnumPieceType.None;
     PlayerColor = cs.Transparent;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// SetPieceType
 /// </summary>
 /// <param name="aChessPieceType"></param>
 internal void SetPieceType(EnumPieceType aChessPieceType)
 {
     chessPieceType = aChessPieceType;
 }
Ejemplo n.º 11
0
        private int DeterminerMeilleurEmplacement(EnumPieceType pieceAPlacer)
        {
            bestEmplacement.x        = -1;
            bestEmplacement.y        = -1;
            bestEmplacement.rotation = -1;
            switch (pieceAPlacer)
            {
            case EnumPieceType.I_block:
                //recherche meilleur emplacement avec la barre horizontal (rotation = 1)
                for (int i = 0; i < nbCasesX - 3; i++)
                {
                    int y = 0;
                    while (Grille[i][y].caseStatus == Case.EnumCaseStatus.Empty && Grille[i + 1][y].caseStatus == Case.EnumCaseStatus.Empty && Grille[i + 2][y].caseStatus == Case.EnumCaseStatus.Empty && Grille[i + 3][y].caseStatus == Case.EnumCaseStatus.Empty)
                    {
                        y++;
                    }
                    ;

                    if (y > bestEmplacement.y)
                    {
                        bestEmplacement.x        = i;
                        bestEmplacement.y        = y;
                        bestEmplacement.rotation = 1;
                    }
                }

                //recherche meilleur emplacement avec la barre verticale (rotation = 2)
                for (int i = 0; i < nbCasesX; i++)
                {
                    int y = 0;
                    while (Grille[i][y].caseStatus == Case.EnumCaseStatus.Empty)
                    {
                        y++;
                    }
                    ;

                    if (y > bestEmplacement.y)
                    {
                        bestEmplacement.x        = i;
                        bestEmplacement.y        = y;
                        bestEmplacement.rotation = 2;
                    }
                }
                break;

            case EnumPieceType.O_block:
                for (int i = 0; i < nbCasesX - 1; i++)
                {
                    int y = 0;
                    while (Grille[i][y].caseStatus == Case.EnumCaseStatus.Empty && Grille[i + 1][y].caseStatus == Case.EnumCaseStatus.Empty)
                    {
                        y++;
                    }
                    ;

                    if (y > bestEmplacement.y)
                    {
                        bestEmplacement.x        = i;
                        bestEmplacement.y        = y;
                        bestEmplacement.rotation = 0;
                    }
                }
                break;

            case EnumPieceType.J_block:
                for (int r = 1; r <= 4; r++)     //rotation: 1 à 4
                {
                }
                break;
            }
            return(bestEmplacement.x);
        }