/// <summary> /// /// проверка возможности следующего хода /// /// </summary> /// /// <param name="move"> /// /// строковое представление хода /// /// </param> /// /// <returns> /// /// возвращаем новую доску с текущим ходом /// /// </returns> public Chess Move(string move) { FigureMoving figureMoving = new FigureMoving(move); /// <summary> /// /// если нельзя совершить указаный ход /// /// </summary> /// /// <returns> /// /// возвращаем текущее расположение шахмат /// /// </returns> if (!_moves.CanMove(figureMoving)) { return(this); //ToDo : add new exception данный ход не возможен!! } if (_board.IsCheckAfter(figureMoving)) { return(this);//ToDo : add new exception данный ход не возможен, IsCheck!! } Board nextBoard = _board.Move(figureMoving); Chess nextChess = new Chess(nextBoard); return(nextChess); }
public bool isValidMove(string move) { FigureMoving fm = new FigureMoving(move); if (!moves.CanMove(fm)) { return(false); } if (board.IsCheckAfter(fm)) { return(false); } return(true); }
public Chess Move(string move) // Pe2e4 Pe7e8Q { FigureMoving fm = new FigureMoving(move); if (!moves.CanMove(fm)) { return(this); } if (board.IsCheckAfterMove(fm)) { return(this); } Board nextBoard = board.Move(fm); Chess nextChess = new Chess(nextBoard); return(nextChess); }
// Принимает ход в виде Pe2e4 Pe7e8Q public Chess Move(string move) { FigureMoving fm = new FigureMoving(move); // Если нельзя сделать ход.. if (!moves.CanMove(fm)) { return(this); } if (board.IsCheckAfterMove(fm)) { return(this); } Board nextBoard = board.Move(fm); Chess nextChess = new Chess(nextBoard); return(nextChess); }
bool CanEatKing() { Square badKing = FindBadKing(); Moves moves = new Moves(this); foreach (FigureOnSquare fs in YieldMyFigureSquares()) { if (moves.CanMove(new FigureMoving(fs, badKing))) { return(true); } } return(false); }
/// <summary> /// /// алгоритм проверки возможности сьедения вражеского короля /// /// </summary> private bool CanEatKing() { Square badKing = FindBadKing(); Moves move = new Moves(this); foreach (FigureOnSquare figureOnSquare in YieldFiguresOnSquare()) { if (move.CanMove(new FigureMoving(figureOnSquare, badKing))) { return(true); } } return(false); }
private bool CanEatKing() { var oponentKing = FindOponentKing(); if (oponentKing == Square.none) { return(false); } var moves = new Moves(this); foreach (var fs in YieldFiguresOnSquares()) { if (moves.CanMove(new FigureMoving(fs, oponentKing))) { return(true); } } return(false); }
public bool IsValidMove(FigureMoving fm) { return(Moves.CanMove(fm) && !Board.IsCheckAfter(fm)); }