Esempio n. 1
0
        public override ChessBoard MovePiece(ChessBoard board, int[] coord, int[] desiredCoord)
        {
            Coord desCoord = new Coord {
                CoordY = desiredCoord[0], CoordX = desiredCoord[1]
            };
            List <Coord> pos = new List <Coord>();

            // SWW
            if (coord[0] + 1 == desiredCoord[0] && coord[1] - 2 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] + 1, coord[1] - 2, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] + 1, CoordX = coord[1] - 2
                    });
                }
            }

            // SW
            if (coord[0] + 2 == desiredCoord[0] && coord[1] - 1 == desiredCoord[1]) // & Check if move is legal
            {
                if (!board.ContainsEnemyPiece(coord[0] + 2, coord[1] - 1, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] + 2, CoordX = coord[1] - 1
                    });
                }
            }

            // NWW
            if (coord[0] - 1 == desiredCoord[0] && coord[1] - 2 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] - 1, coord[1] - 2, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] - 1, CoordX = coord[1] - 2
                    });
                }
            }

            // NW
            if (coord[0] - 2 == desiredCoord[0] && coord[1] - 1 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] - 2, coord[1] - 1, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] - 2, CoordX = coord[1] - 1
                    });
                }
            }

            // SEE
            if (coord[0] + 1 == desiredCoord[0] && coord[1] + 2 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] + 1, coord[1] + 2, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] + 1, CoordX = coord[1] + 2
                    });
                }
            }

            // SE
            if (coord[0] + 2 == desiredCoord[0] && coord[1] + 1 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] + 2, coord[1] + 1, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] + 2, CoordX = coord[1] + 1
                    });
                }
            }

            // NEE
            if (coord[0] - 1 == desiredCoord[0] && coord[1] + 2 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] - 1, coord[1] + 2, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] - 1, CoordX = coord[1] + 2
                    });
                }
            }

            // NE
            if (coord[0] - 2 == desiredCoord[0] && coord[1] + 1 == desiredCoord[1]) // & Check if move is legal
            {
                if (board.ContainsEnemyPiece(coord[0] - 2, coord[1] + 1, Color))
                {
                    pos.Add(new Coord {
                        CoordY = coord[0] - 2, CoordX = coord[1] + 1
                    });
                }
            }

            if (ObjectContainsValue(pos, desCoord))
            {
                Piece tmpPiece = board.GetCaseAtPos(coord[0], coord[1]).PieceBoard;
                board.Board[coord[0], coord[1]].PieceBoard = new EmptyPiece();
                board.Board[desiredCoord[0], desiredCoord[1]].PieceBoard = tmpPiece;
                return(board);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 2
0
 public Case(Piece piece, int x, int y)
 {
     PieceBoard = piece;
     CoordX     = x;
     CoordY     = y;
 }