public Card Discard(Card c) { Log.WriteLine("discards {0}", c.ToString()); c.In = Card.Holder.DISCARD; if (this.Hints < HINTS) this.Hints++; return Draw(); }
public static void Shuffle(Card[] list) { var n = list.Length; while (n > 1) { n--; var k = Rng.Next(n + 1); var value = list[k]; list[k] = list[n]; list[n] = value; } }
public Card Play(Card c) { Log.Write("plays {0}... ", c.ToString()); if (this.Deck.AllowPlay(c)) { Log.WriteLine("OK!"); c.In = Card.Holder.BOARD; if (c.Number == Card.NUMBERS && this.Hints < HINTS) this.Hints++; } else { Log.WriteLine("FAIL!"); c.In = Card.Holder.DISCARD; this.Fails--; } return Draw(); }
private void ContemplateSuitHint(Card.Suit suit, IEnumerable<Card> relevantCards) { var remainingCardsForSuit = Card.GetNumbers().Count() - game.Progress[suit]; if (remainingCardsForSuit < relevantCards.Count()) { foreach (var card in relevantCards) { card.ShouldBurn = true; } } else if (relevantCards.Count() == 1) { relevantCards.First().ShouldGain = true; } }
public void ReceiveCard(Card card) { cards.Add(card); validHintCache.Clear(); PushUndoable(delegate() { cards.Remove(card); validHintCache.Clear(); }); }
protected Play(Card card) { Card = card; }
public Gain(Card card) : base(card) { }
public Burn(Card card) : base(card) { }
public SuitHint(Player targetPlayer, Card.Suit suit) { TargetPlayer = targetPlayer; Suit = suit; }
public PlayerCard(Card card) { Color = card.Color; Rank = card.Rank; Initialization(); }
public IEnumerable<Card> GetRemainingCards() { var output = new Card[cards.Length-currentCardIndex]; Array.Copy(cards, currentCardIndex, output, 0, output.Length); return output; }
public void AddCard(Card c) { if (c == null) return; this.Cards.Add(new HeldCard(c)); }