Exemple #1
0
        private void ContemplateNumberHint(int number, IEnumerable <Card> relevantCards)
        {
            var playableSlots = 0;
            var futureSlots   = 0;

            foreach (var currentProgress in Card.GetSuits().Select(suit => game.Progress[suit]))
            {
                if (currentProgress == number - 1)
                {
                    playableSlots += 1;
                }
                else if (currentProgress < number)
                {
                    futureSlots += 1;
                }
            }

            if (playableSlots >= relevantCards.Count())
            {
                foreach (var card in relevantCards)
                {
                    card.ShouldGain = true;
                }
            }
            else if (futureSlots <= relevantCards.Count())
            {
                foreach (var card in relevantCards)
                {
                    card.ShouldBurn = true;
                }
            }
        }
Exemple #2
0
        public Game(int numPlayers, int handSize)
        {
            VersionSource  = this;
            Deck           = new Deck(this);
            HintTokens     = InitialHintTokens;
            DeathTokens    = InitialDeathTokens;
            TurnsRemaining = Deck.CountRemainingCards();

            Progress = new Dictionary <Card.Suit, int>();
            foreach (var suit in Card.GetSuits())
            {
                Progress[suit] = 0;
            }

            Players = new List <Player>();
            for (int id = 0; id < numPlayers; id++)
            {
                var player = new Player(this, id);
                for (int drawIndex = 0; drawIndex < handSize; drawIndex++)
                {
                    DrawCardFor(player);
                }
                Players.Add(player);
                Console.WriteLine(player);
            }

            IncrementVersion();
        }
Exemple #3
0
        public void PrintProgress()
        {
            var output = "{";

            foreach (var suit in Card.GetSuits())
            {
                output += string.Format(" {0}:{1} ", suit, Progress[suit]);
            }
            Console.WriteLine(output + "}");
        }
Exemple #4
0
        public Deck(IVersionSource versionSource)
        {
            VersionSource = versionSource;
            var cardList = new List <Card>();

            foreach (var suit in Card.GetSuits())
            {
                foreach (var number in Card.GetNumbers())
                {
                    for (var i = 0; i < cardCounts[number - 1]; i++)
                    {
                        cardList.Add(new Card(suit, number, versionSource));
                    }
                }
            }
            cards = cardList.ToArray();
            Shuffle(cards);
        }
Exemple #5
0
 private int ScoreProgress()
 {
     return(Card.GetSuits().Sum(suit => progressValues[Progress[suit]]));
 }