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; }