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; } } }
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(); }
public void PrintProgress() { var output = "{"; foreach (var suit in Card.GetSuits()) { output += string.Format(" {0}:{1} ", suit, Progress[suit]); } Console.WriteLine(output + "}"); }
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); }
private int ScoreProgress() { return(Card.GetSuits().Sum(suit => progressValues[Progress[suit]])); }