public int TestBoard(ISuggestionStrategy strategy, Board board, Board[] allBoards, IDictionary <string, int> itemCounts)
        {
            Item[] filledItems = new Item[SuperMarioWiiConstants.ItemsPerBoard];
            int    suggestion  = 0;

            while (allBoards.Where(x => x.Matches(filledItems)).Count() > 1)
            {
                var suggestionId = strategy.SuggestNextItemPosition(allBoards, filledItems);
                suggestion++;

                if (suggestionId != null)
                {
                    var item = board[suggestionId.Value];

                    if (!itemCounts.ContainsKey(item.Name))
                    {
                        itemCounts.Add(item.Name, 0);
                    }
                    itemCounts[item.Name]++;

                    filledItems[suggestionId.Value] = item;
                }
            }

            Assert.False(filledItems.Where(i => i == Item.Bowser).Count() > 1, "Lost because found two Bowsers");
            Assert.False((filledItems.Where(i => i == Item.MiniBowser).Count() > 1), "Lost because found two MiniBowsers");

            var solutions = allBoards.Where(x => x.Matches(filledItems)).ToArray();

            Assert.Single(solutions);
            return(suggestion);
        }
Esempio n. 2
0
        public void FocusBestPosition()
        {
            var res = strat.SuggestNextItemPosition(allBoards, itemInformations);

            if (res == null)
            {
                return;
            }
            focusedItem = res.Value;
        }