Пример #1
0
 private void btnRook_Click(object sender, System.EventArgs e)
 {
     pieceSelected = PieceType.Tower;
     DialogResult  = DialogResult.OK;
     Close();
 }
Пример #2
0
 private void btnBishop_Click(object sender, System.EventArgs e)
 {
     pieceSelected = PieceType.Bishop;
     DialogResult  = DialogResult.OK;
     Close();
 }
Пример #3
0
 public PieceBase(PieceType pieceType)
 {
     this.pieceType = pieceType;
 }
Пример #4
0
 public Location GetPiece(PieceColor color, PieceType type) =>
 AllBoard().Single(loc => GetPiece(loc).Is(color) && GetPiece(loc).PieceType == type);
Пример #5
0
 public Piece(PieceType type, Colour owner) : this()
 {
     Type         = type;
     Owner        = owner;
     HasEverMoved = false;
 }
Пример #6
0
 public static bool Is(Piece piece, PieceColor color, PieceType pieceType) =>
 Is(piece, color) && piece.PieceType == pieceType;
Пример #7
0
 public Move(MoveFlags flags, MoveDirections direction, Square startPosition, Square movePosition, Square capturePosition, PieceType conversionType = PieceType.PieceType_NB)
 {
     Flags           = flags;
     Direction       = direction;
     StartPosition   = startPosition;
     MovePosition    = movePosition;
     CapturePosition = capturePosition;
     ConversionType  = conversionType;
 }
Пример #8
0
 public static bool Is(this Piece piece, PieceColor color, PieceType pieceType) =>
 piece.Is(color) && piece.PieceType == pieceType;
Пример #9
0
 /// <summary>
 /// Crown the pawn (change its piece type to the selected one)
 /// </summary>
 public void Crown(Piece pawn, Player player, PieceType selectedPiece)
 {
     cells[pawn.position.row, pawn.position.column].type = selectedPiece;
 }
Пример #10
0
 public SinglePiece(PieceType type, Color color, int id)
 {
     Piece = type;
     Color = color;
     ID    = id;
 }
Пример #11
0
 public static Move MakeMove(Square org, Square dst, PieceType pt)
 {
     return((Move)((ushort)MoveType.PROMOTE + ((((pt - PieceType.NIHT) << 6) + org) << 6) + dst));
 }
Пример #12
0
        /// <summary>
        /// Moves the activePiece to the location inputted, detects if a player is under check or checkmate, and changes the turn to the other player.
        /// </summary>
        private void MovePieceAndChangeTurn(Point location, bool kill)
        {
            Pair endPosition   = GetCellAtPoint(location);
            Pair piecePosition = GetCellAtPoint(activePiece.Location);

            if (activePiece != null)
            {
                Piece piece = boardInterface.PieceAtLocation(piecePosition.row, piecePosition.column);

                if (boardInterface.IsValidMove(piece, endPosition) && piece.color == turn.color)
                {
                    if (!boardInterface.MoveMakesYouChecked(piece, endPosition, turn))
                    {
                        moveMakesYouChecked = false;

                        // Move piece in display
                        location.X           = GetPictureLocation(new Pair(endPosition.row, endPosition.column)).X;
                        location.Y           = GetPictureLocation(new Pair(endPosition.row, endPosition.column)).Y;
                        activePiece.Location = location;

                        // Check for castling
                        if (activePiece == whiteKing && Math.Abs(endPosition.column - piecePosition.column) == 2)
                        {
                            if (endPosition.column > piecePosition.column)
                            {
                                whiteTower2.Location = GetCellLocation(new Pair(7, 4));
                            }
                            else
                            {
                                whiteTower.Location = GetCellLocation(new Pair(7, 2));
                            }
                        }

                        if (activePiece == blackKing && Math.Abs(endPosition.column - piecePosition.column) == 2)
                        {
                            if (endPosition.column > piecePosition.column)
                            {
                                blackTower2.Location = GetCellLocation(new Pair(0, 4));
                            }
                            else
                            {
                                blackTower.Location = GetCellLocation(new Pair(0, 2));
                            }
                        }

                        // Kill if needed
                        if (kill)
                        {
                            killedPiece.Visible = false;
                            killedPiece.Enabled = false;
                        }

                        // Move piece in logic
                        boardInterface.Move(piece, endPosition, turn);

                        // Crown if needed
                        if (piece.type == PieceType.Pawn && (endPosition.row == 0 || endPosition.row == 7))
                        {
                            PieceType pieceSelected = GetPieceForCrowning();
                            boardInterface.Crown(piece, turn, pieceSelected);
                            ChangeActivePieceImage(pieceSelected);
                        }

                        // Change turn
                        if (turn.color == Color.White)
                        {
                            turn = black;
                        }
                        else
                        {
                            turn = white;
                        }

                        // Check detection
                        if (boardInterface.UnderCheck(turn))
                        {
                            Check();
                        }
                        else
                        {
                            check = false;
                        }

                        // Checkmate detection
                        if (boardInterface.CheckMated(white) || boardInterface.CheckMated(black))
                        {
                            CheckMate();
                        }
                    }
                    else
                    {
                        moveMakesYouChecked = true;
                    }
                }
                else
                {
                    activePiece = null;
                }

                Invalidate();
            }
        }
Пример #13
0
 public static Boolean Is(Piece piece, PieceColor color, PieceType pieceType)
 {
     return(Is(piece, color) && piece.PieceType == pieceType);
 }
Пример #14
0
 private void btnKnight_Click(object sender, System.EventArgs e)
 {
     pieceSelected = PieceType.Horse;
     DialogResult  = DialogResult.OK;
     Close();
 }
Пример #15
0
 private Piece(Bitmap img, ChessFlag flag, PieceType type)
 {
     Img  = img;
     Flag = flag;
     Type = type;
 }
Пример #16
0
 public Empty()
     : base(null, Vector2.Zero, Color.White, Vector2.Zero, PieceColor.None)
 {
     Type = PieceType.None;
 }
Пример #17
0
        public static void AddPiece(this Game game, Square square, PieceType type)
        {
            Piece piece = null;

            switch (type)
            {
            case PieceType.NoPiece:
                break;

            case PieceType.WhiteKing:
                piece = new King(Color.White);
                break;

            case PieceType.WhiteQueen:
                piece = new Queen(Color.White);
                break;

            case PieceType.WhiteRook:
                piece = new Rook(Color.White);
                break;

            case PieceType.WhiteBishop:
                piece = new Bishop(Color.White);
                break;

            case PieceType.WhiteNight:
                piece = new Knight(Color.White);
                break;

            case PieceType.WhitePawn:
                piece = new Pawn(Color.White);
                break;

            case PieceType.BlackKing:
                piece = new King(Color.Black);
                break;

            case PieceType.BlackQueen:
                piece = new Queen(Color.Black);
                break;

            case PieceType.BlackRook:
                piece = new Rook(Color.Black);
                break;

            case PieceType.BlackBishop:
                piece = new Bishop(Color.Black);
                break;

            case PieceType.BlackKnight:
                piece = new Knight(Color.Black);
                break;

            case PieceType.BlackPawn:
                piece = new Pawn(Color.Black);
                break;

            default:
                throw new NotImplementedException();
            }
            game.AddPiece(square.File, square.Rank, piece);
        }
Пример #18
0
 public Piece(PieceType pieceType, PieceColor color)
 {
     PieceType = pieceType;
     Color     = color;
 }
Пример #19
0
 public static Piece MakePiece(Color c, PieceType pt)
 {
     return((c << 3) + pt);
 }