public override Move MakeMove(Row[] rows, Dictionary <BoardState, List <Move> > boardStates) { int row = MakeRowChoice(rows.Count(), rows); int numToRemove = MakeRandomChoice(rows[row - 1].RowSize); AverageValue avgVal = new AverageValue(0, 0); Move move = new Move(row, numToRemove, avgVal); return(move); }
public override Move MakeMove(Row[] rows, Dictionary <BoardState, List <Move> > boardStates) { bool madeSmartMove = false; int row = MakeRowChoice(rows.Count(), rows); int numToRemove = MakeRandomChoice(rows[row - 1].RowSize); AverageValue avgVal = new AverageValue(0, 0); Move move = new Move(row, numToRemove, avgVal); // CHECK TO SEE IF CURRENT BOARD STATE IS SAVED IN KNOWN MOVES while (!madeSmartMove) { foreach (KeyValuePair <BoardState, List <Move> > item in boardStates) { if (item.Key.CheckIfStatesSame(rows) && !madeSmartMove) { foreach (Move thisMove in item.Value) { if (!madeSmartMove && thisMove.AverageValue.GetValue >= 0) { row = thisMove.Row; numToRemove = thisMove.NumToRemove; if (rows[row - 1].RemovePieces(numToRemove)) { madeSmartMove = true; } } } } } madeSmartMove = true; } return(move); }
public Move(int row, int numToRemove, AverageValue averageValue) { _row = row; _numToRemove = numToRemove; _averageValue = averageValue; }