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