public List <string> GetValidCaptures() { var figuresOnSquares = Board.GetFigureOnSquares(); var squares = Square.GetBoardSquares(); var validMoves = new List <string>(); var opponentCollor = MoveColor == Color.black ? Color.white : Color.black; foreach (var figuresOnSquare in figuresOnSquares) { foreach (var to in squares) { foreach (Figure promotion in figuresOnSquare.Figure.YieldPromotions(to)) { FigureMoving fm = new FigureMoving(figuresOnSquare, to, promotion); if (IsValidMove(fm) && Board.GetFigureAt(to).GetFigureColor() == opponentCollor) { validMoves.Add(fm.ToString()); } } } } return(validMoves); }
/// <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 CanMove(FigureMoving fm) { this.fm = fm; return (CanMoveFrom() && CanMoveTo()); }
/// <summary> /// /// мметод который описывает движение фигуры по игровой доске /// /// </summary> /// /// <param name="figureMoving"> /// /// фиуга которая совершает движение /// /// </param> /// /// <returns> /// /// возвращает логическое значение может ли совершить указаная фигура /// совершить данное движение по игровой доске /// /// </returns> public bool CanMove(FigureMoving figureMoving) { _figureMoving = figureMoving; return(CanMoveFrom() && CanMoveTo() && CanFigureMove()); }
public bool CanMove(FigureMoving fm) { this.fm = fm; return // Можно ли пойти с этой клетки (CanMoveFrom() && // Можно ли пойти куда собрались ходить CanMoveTo() && // Может ли фигура сделать этот ход CanFigureMove()); }
public Chess Move(string move) { if (!IsValidMove(move)) { return(this); } FigureMoving fm = new FigureMoving(move); Board nextBoard = board.Move(fm); Chess nextChess = new Chess(nextBoard); return(nextChess); }
public Chess Move(string move) { var fm = new FigureMoving(move); if (!IsValidMove(fm)) { return(this); } var nextBoard = Board.Move(fm); return(new Chess(nextBoard)); }
public NextBoard(string fen, FigureMoving fm) : base(fen) { this.fm = fm; MoveFigures(); DropEnpassant(); SetEnpassant(); MoveCastleRook(); UpdateCastleFlags(); MoveNumber(); MoveColor(); GenerateFEN(); }
public Board Move(FigureMoving fm) { Board next = new Board(fen); next.SetFigureAt(fm.from, Figure.none); next.SetFigureAt(fm.to, fm.promotion == Figure.none ? fm.figure : fm.promotion); if (moveColor == Color.black) { next.moveNumber++; } next.moveColor = moveColor.FlipColor(); next.GenerateFEN(); return(next); }
public bool isValidMove(string move) { FigureMoving fm = new FigureMoving(move); if (!moves.CanMove(fm)) { return(false); } if (board.IsCheckAfter(fm)) { return(false); } return(true); }
bool CanEatKing() { Square badKing = FindBadKing(); Moves moves = new Moves(this); foreach (FigureOnSquare fs in YieldFigures()) { FigureMoving fm = new FigureMoving(fs, badKing); if (moves.CanMove(fm)) { return(true); } } return(false); }
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); }
void FindAllMoves() { allMoves = new List <FigureMoving>(); foreach (FigureOnSquare fs in board.YieldFigures()) { foreach (Square to in Square.YieldSquares()) { FigureMoving fm = new FigureMoving(fs, to); if (moves.CanMove(fm)) { if (!board.IsCheckAfterMove(fm)) { allMoves.Add(fm); } } } } }
public NextBoard(string fen, FigureMoving figureMoving) : base(fen) { _figureMoving = figureMoving; MoveFigures(); DropEnpassant(); SetEnpassant(); MoveCastlingRook(); UpdateCastleFlags(); UpdateMoveNumber(); UpdateMoveColor(); GenerateFEN(); }
// Принимает ход в виде 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); }
public IEnumerable <string> YieldValidMoves() { foreach (FigureOnSquare fs in board.YieldMyFigureOnSquares()) { foreach (Square to in Square.YieldBoardSquares()) { foreach (Figure promotion in fs.figure.YieldPromotions(to)) { FigureMoving fm = new FigureMoving(fs, to, promotion); if (moves.CanMove(fm)) { if (!board.IsCheckAfter(fm)) { yield return(fm.ToString()); } } } } } }
public IEnumerable <string> YieldValidMoves() { var figuresOnSquares = Board.GetFigureOnSquares(); var squares = Square.GetBoardSquares(); foreach (var figuresOnSquare in figuresOnSquares) { foreach (var to in squares) { foreach (Figure promotion in figuresOnSquare.Figure.YieldPromotions(to)) { FigureMoving fm = new FigureMoving(figuresOnSquare, to, promotion); if (IsValidMove(fm)) { yield return(fm.ToString()); } } } } }
/// <summary> /// /// перебор всех фигур текущего игрока которые могут совершить ход на игровой доске /// /// </summary> /// /// <returns> /// /// возвращает все фигуры которые могут совершть ход /// /// </returns> public IEnumerable <string> YieldValidMoves() { foreach (FigureOnSquare figureOnSquare in _board.YieldFiguresOnSquare()) { foreach (Square to in Square.YieldBoardSquare()) { foreach (Figure promotion in figureOnSquare.FigurE.YeldPromotions(to)) { FigureMoving figureMoving = new FigureMoving(figureOnSquare, to, promotion); if (_moves.CanMove(figureMoving)) { if (!_board.IsCheckAfter(figureMoving)) { yield return(figureMoving.ToString()); } } } } } }
public Chess Move(string move) { if (!isValidMove(move)) { return(this); } FigureMoving fm = new FigureMoving(move); if (!moves.CanMove(fm)) { return(this); } if (board.IsCheckAfter(fm)) { return(this); } Board nextBoard = board.Move(fm); Chess nextChess = new Chess(nextBoard); return(nextChess); }
public List <string> GetValidMoves() { var figuresOnSquares = Board.GetFigureOnSquares(); var squares = Square.GetBoardSquares(); var validMoves = new List <string>(); foreach (var figuresOnSquare in figuresOnSquares) { foreach (var to in squares) { foreach (Figure promotion in figuresOnSquare.Figure.YieldPromotions(to)) { FigureMoving fm = new FigureMoving(figuresOnSquare, to, promotion); if (IsValidMove(fm)) { validMoves.Add(fm.ToString()); } } } } return(validMoves); }
public Board Move(FigureMoving fm) { return(new NextBoard(fen, fm)); }
public bool IsValidMove(FigureMoving fm) { return(Moves.CanMove(fm) && !Board.IsCheckAfter(fm)); }
/// <summary> /// /// метод которы отвечает за движение фигур по игровой доске /// /// </summary> /// /// <param name="figureMoving"> /// /// фигура которая совершает ход /// /// </param> /// /// <returns> /// /// возвращает новую игровую доску /// /// </returns> public Board Move(FigureMoving figureMoving) { return(new NextBoard(_fen, figureMoving)); }
public bool IsCheckAfterMove(FigureMoving fm) { Board after = Move(fm); return(after.CanEatKing()); }
internal bool IsCheckAfter(FigureMoving fm) { Board after = Move(fm); return(after.CanEatKing()); }