private static bool IsCorrectMove(ChessFigures figure, string from, string to) { var dx = Math.Abs(to[0] - from[0]); //смещение фигуры по горизонтали var dy = Math.Abs(to[1] - from[1]); //смещение фигуры по вертикали return(figure switch { ChessFigures.King => (dy == 1 && dx == 1) || (dy == 0 && dx == 1) || (dx == 0 && dy == 1), ChessFigures.Queen => (dx == dy && dx != 0) || (dy == 0 && dx != 0) || (dx == 0 && dy != 0), ChessFigures.Rook => (dy == 0 && dx != 0) || (dx == 0 && dy != 0), ChessFigures.Bishop => (dx == dy && dx != 0), ChessFigures.Knight => (dx != dy && ((dx == 2 && dy == 1) || (dy == 2 && dx == 1))), ChessFigures.Pawn => throw new NotImplementedException(), _ => throw new ArgumentException(), });
public static void Chess(ChessFigures figure, string from, string to) { Console.WriteLine(figure.ToString() + " : {0}-{1} {2}", from, to, IsCorrectMove(figure, from, to)); }