using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Chess.Pieces { class King : ChessPiece { public King(bool isWhite) : base(isWhite) { PieceImage = new Bitmap(!isWhite ? Chess.Properties.Resources.b_king_png_shadow_256px : Chess.Properties.Resources.w_king_png_shadow_256px); } public override bool CanMoveTo(ChessBoard board, BoardTile currentTile, BoardTile destinationTile) { MoveCheckResult result; result = CanMoveDown(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveUp(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveLeft(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveRight(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; // diagonal result = CanMoveDownLeft(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveDownRight(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveUpLeft(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; result = CanMoveUpRight(board, currentTile, destinationTile, 1); if (result == MoveCheckResult.CanMove) return true; if (result == MoveCheckResult.CantMove) return false; return false; } } }