예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
파일: Move.cs 프로젝트: NessaDevelops/Nim
 public Move(int row, int numToRemove, AverageValue averageValue)
 {
     _row          = row;
     _numToRemove  = numToRemove;
     _averageValue = averageValue;
 }