Ejemplo n.º 1
0
        private void GenerateMoves(BgMoveList moveList, BgMove prevMove)
        {
            BgMoveList singleMoves = FindAllSingleMoves();

            if (singleMoves.Count() > 0)
            {
                for (int i = 0; i < singleMoves.Count(); i++)
                {
                    BgMove currentMove = new BgMove(singleMoves.GetBgMove(i).From, singleMoves.GetBgMove(i).To, prevMove);

                    m_BgGame.MakeMove(currentMove.From, currentMove.To);
                    GenerateMoves(moveList, currentMove);

                    m_BgGame.Undo();
                }
            }
            else
            {
                if (prevMove != null)
                {
                    moveList.AddBgMove(BgMove.CloneFromFirst(prevMove.FirstMove));
                }
            }
        }
        public void GeneratePossibleRepresentations(MoveRepresentationList knowledgeList)
        {
            string currentPattern = m_PatternEncoder.Encode(m_BgGame);

            if (!currentPattern.Equals(m_CurrentGeneratedPattern))
            {
                m_CurrentGeneratedMoves.Clear();
                m_MoveGenerator.GenerateMoves(m_MoveList);

                for (int i = 0; i < m_MoveList.Count(); i++)
                {
                    MoveRepresentation possibleMove = new MoveRepresentation(m_BgGame, m_MoveList.GetBgMove(i));
                    m_CurrentGeneratedMoves.AddMoveRepresentation(possibleMove, false);
                }

                m_CurrentGeneratedPattern = currentPattern;
            }

            knowledgeList.Clear();

            for (int i = 0; i < m_CurrentGeneratedMoves.Count(); i++)
            {
                knowledgeList.AddMoveRepresentation(m_CurrentGeneratedMoves.GetMoveRepresentation(i).GetClone(), true);
            }
        }