/// <summary> /// Comprueba si la pieza se puede mover a una fila / columna /// </summary> internal override bool CanMoveTo(SquareModel board, int fromRow, int fromColumn, int toRow, int toColumn) { // Comprueba si puede mover if (IsDiagonalMovement(fromRow, fromColumn, toRow, toColumn, false)) { return(board.IsPathEmpty(fromRow, fromColumn, toRow, toColumn) && board.IsLegalMoveTo(this, toRow, toColumn)); } // Devuelve el valor que indica si puede mover return(false); }
/// <summary> /// Comprueba si la pieza se puede mover a una fila / columna /// </summary> internal override bool CanMoveTo(SquareModel board, int fromRow, int fromColumn, int toRow, int toColumn) { // Comprueba si es un movimiento horizontal / diagonal if (IsVerticalHorizontalMovement(fromRow, fromColumn, toRow, toColumn, false) || IsDiagonalMovement(fromRow, fromColumn, toRow, toColumn, false)) { return(board.IsPathEmpty(fromRow, fromColumn, toRow, toColumn) && board.IsLegalMoveTo(this, toRow, toColumn)); } // Si ha llegado hasta aquí es porque el movimiento no era legal return(false); }
/// <summary> /// Comprueba si la pieza se puede mover a una fila / columna /// </summary> internal override bool CanMoveTo(SquareModel board, int fromRow, int fromColumn, int toRow, int toColumn) { int rowDifference = Math.Abs(fromRow - toRow); int columnDifference = Math.Abs(fromColumn - toColumn); // Puede moverse si se desplaza dos celdas en una dirección y una en otra if ((rowDifference == 2 && columnDifference == 1) || (rowDifference == 1 && columnDifference == 2)) { return(board.IsLegalMoveTo(this, toRow, toColumn)); } // Devuelve el valor que indica que no se puede return(false); }