Пример #1
0
        private List<Pawn> GetAllPieces(Board b)
        {
            List<Pawn> toReturn = new List<Pawn>();
            Piece[,] board = b.AllPieces();
            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    if (board[i, j] != null)
                    {
                        Piece p = board[i, j];
                        Pawn toAdd = GetPawn(p, j, i);
                        toReturn.Add(toAdd);
                        if (p is IHasAlreadyMoved && ((IHasAlreadyMoved)p).HasAlreadyMoved)
                        {
                            Pawn infoHasAlreadyMoved = GetPawn(p, j, i);
                            infoHasAlreadyMoved.Coord.x = -infoHasAlreadyMoved.Coord.x;
                            infoHasAlreadyMoved.Coord.y = -infoHasAlreadyMoved.Coord.y;
                            infoHasAlreadyMoved.Name = HaveAlreadyMovedSpecialName;
                            toReturn.Add(infoHasAlreadyMoved);
                        }
                    }
                }
            }
            if (b.EnPassant != null)
            {
                Pawn enPassant = new Pawn(EnPassantSpecialName, -(Board.Columns[b.EnPassant.Item1] + 1), -(b.EnPassant.Item2));
                toReturn.Add(enPassant);
            }

            if (b.PawnPromoted)
            {
                //We list the propositions :
                int currentColumn = 0;
                foreach (Piece p in b.PawnPromotedChoice())
                {
                    Pawn PawnChoice = GetPawn(p, currentColumn, 8);
                    toReturn.Add(PawnChoice);
                    currentColumn++;
                }
            }
            return toReturn;
        }