コード例 #1
0
        private IEnumerable <BoardWithHistory> EnumSim(BoardWithHistory currentBoard, Piece.PlayerColour currentColour, int currentMoveNum, Predicate <ConditionalStruct> condition)
        {
            if (condition(new ConditionalStruct {
                Board = currentBoard.Board, MoveCount = currentMoveNum
            }))
            {
                yield return(currentBoard);
            }
            else
            {
                Piece.PlayerColour nextColour = currentColour == Piece.PlayerColour.White ? Piece.PlayerColour.Black : Piece.PlayerColour.White;
                foreach (Piece p in currentBoard.Board.EnumeratePieces(currentColour))
                {
                    foreach (Cell move in p.GetPossibleMoves())
                    {
                        Board            nextBoard = currentBoard.Board.SimulateMove(p.ParentCell, move);
                        BoardWithHistory nextBWH   = new BoardWithHistory()
                        {
                            Board        = nextBoard,
                            BoardHistory = currentBoard.BoardHistory + "\r\n\r\n" + nextBoard.BoardString,
                        };

                        foreach (BoardWithHistory returnedBoard in EnumSim(nextBWH, nextColour, currentMoveNum + 1, condition))
                        {
                            yield return(returnedBoard);
                        }
                    }
                }
            }
        }
コード例 #2
0
        public IEnumerable <BoardWithHistory> EnumSimTill(Piece.PlayerColour startColour, Predicate <ConditionalStruct> condition)
        {
            Board            copyOfBoard   = this.Clone() as Board;
            BoardWithHistory copyOfBoardWH = new BoardWithHistory()
            {
                Board        = copyOfBoard,
                BoardHistory = copyOfBoard.BoardString,
            };

            foreach (BoardWithHistory simBoard in EnumSim(copyOfBoardWH, startColour, 0, condition))
            {
                yield return(simBoard);
            }
        }