ReturnPosition() public method

public ReturnPosition ( Figure figure ) : int>.Tuple
figure Figure
return int>.Tuple
Example #1
0
        private void PassedPawn(IReadOnlyList<Move> moves, Board board, Figure pawn)
        {
            int rowFrom;
            int rowTo;
            int rows;
            var pawnX = board.ReturnPosition(pawn).Item1;
            var pawnY = board.ReturnPosition(pawn).Item2;
            switch (pawn.Side)
            {
                case Side.BLACK:
                    rows = 4;
                    rowFrom = rows - 2;
                    rowTo = rows - 1;
                    break;
                case Side.WHITE:
                    rows = 5;
                    rowFrom = rows + 2;
                    rowTo = rows + 1;
                    break;
                default:
                    return;
            }

            var cell = new List<string>();
            if (pawnX != 'a')
                cell.Add(((char)(pawnX - 1)).ToString(CultureInfo.InvariantCulture) + rows);
            if (pawnX != 'h')
                cell.Add(((char)(pawnX + 1)).ToString(CultureInfo.InvariantCulture) + rows);

            foreach (var c in cell)
            {
                if (board[c].GetType() == typeof(FigurePawn) && board[c].Side != pawn.Side &&
                    moves[moves.Count - 1].To == c && moves[moves.Count - 1].From ==
                    c[0].ToString(CultureInfo.InvariantCulture) + rowFrom && pawnY == rows)
                    Attackers[c[0] - 'a', rowTo - 1].Add(pawn);

            }
        }
Example #2
0
        private void Castling(List<Move> moves, Board board, Figure king, Figure rook)
        {
            int rows = 0;
            if (king.Side == Side.WHITE)
                rows = 1;
            else if (king.Side == Side.BLACK)
                rows = 8;

            char rookX = board.ReturnPosition(rook).Item1;
            int rookY = board.ReturnPosition(rook).Item2;
            char kingX = board.ReturnPosition(king).Item1;
            int kingY = board.ReturnPosition(king).Item2;

            if (moves.Count != 0)
                foreach (Move move in moves)
                {
                    if (!move.From.Contains(rookX + rookY.ToString(CultureInfo.InvariantCulture)))
                    {
                        foreach (Move move2 in moves)
                            if (!move2.From.Contains(kingX + kingY.ToString(CultureInfo.InvariantCulture)))
                            {
                                CastlingFunc(board, king, rook, rows, rookX);
                            }
                            else
                                return;
                    }
                    else
                        return;
                }
            else
            {
                CastlingFunc(board, king, rook, rows, rookX);
            }
        }