private int ValueCard(Card card, CardSuite trump, CardSuite first) { int value = (int)card.Figure; if (value == 14) { value++; } if (value == 10) { value = 14; } if (card.Suite == trump) { value += 20; } if (value == 29) { value = 36; } if (value == 31) { value = 37; } if (card.Suite != trump && card.Suite != first) { value -= 20; } return(value); }
public RoundContext(int roundNum, CardSuite trumpSuite) { RoundNum = roundNum; TrumpSuite = trumpSuite; Tricks = new List <TrickContext>(); Bids = new Dictionary <Player, int>(); Results = new Dictionary <Player, int>(); }
public GraphicCard(CardSuite suite, CardFigure figure) : base(suite, figure) { Pb = new CardPictureBox(this) { SizeMode = PictureBoxSizeMode.Zoom, Image = IsOpened ? images[this] : faceDownImage }; }
private void PlaySingleRound(int roundNum) { _frontend.DisplayStartRound(roundNum); // shuffle, deal, and initialize round context _curDeck.Shuffle(); _frontend.DisplayDealInProgess(3 /*message duration seconds*/); DealDeck(roundNum); Card trumpCard = _curDeck.Cards.Count > 0 ? _curDeck.PopTop() : null; CardSuite trumpSuite = trumpCard != null ? trumpCard.Suite : CardSuite.SPECIAL; _gameContext.Rounds.Add(new RoundContext(roundNum, trumpSuite)); var curRound = _gameContext.CurRound; curRound.Dealer = roundNum == 1 ? _players[0] : _players[(_players.IndexOf(_gameContext.PrevRound.Dealer) + 1) % _players.Count]; _players.ForEach(player => curRound.Results[player] = 0); _frontend.DisplayDealDone(curRound.Dealer, trumpCard); // bid on current round _players.ForEach(player => curRound.Bids[player] = player.MakeBid(curRound)); int totalBids = curRound.Bids.Aggregate(0, (accumulator, bidPair) => accumulator + bidPair.Value); _frontend.DisplayBidOutcome(roundNum, totalBids); // execute tricks and record results for (int trickNum = 1; trickNum <= roundNum; trickNum++) { PlaySingleTrick(trickNum); Player winner = curRound.CurTrick.Winner; if (curRound.Results.ContainsKey(winner)) { curRound.Results[winner]++; } else { curRound.Results[winner] = 1; } } // resolve round scores _players.ForEach(player => { int diff = Math.Abs(curRound.Bids[player] - curRound.Results[player]); if (diff == 0) { _gameContext.PlayerScores[player] += (BASELINE_SCORE + curRound.Bids[player] * HIT_SCORE); } else { _gameContext.PlayerScores[player] += (diff * MISS_SCORE); } }); _frontend.DisplayRoundScores(_gameContext); }
public Card(CardSuite suite, CardFace face, bool isBlackjack = false) { Suite = suite; Face = face; if (isBlackjack) { HandleBlackjackValue(); } }
public Card(CardSuite suite, CardNumber number) { CardSuite = suite; CardNumber = number; if ((int)CardNumber == 11 || (int)CardNumber == 12 || (int)CardNumber == 13) { CardValue = 10; } else if ((int)CardNumber == 1) { CardValue = 11; } else { CardValue = (int)CardNumber; } }
public static Card CalcWinningCard(List <Card> cardsPlayed, CardSuite trumpSuite, CardSuite?leadingSuite) { Card winningCard = null; foreach (var curCard in cardsPlayed) { if (curCard.Value == CardValue.WIZARD) { winningCard = curCard; break; } else if (curCard.Value == CardValue.JESTER) { continue; } if (winningCard == null) { winningCard = curCard; } else if (curCard.Suite == trumpSuite) { if (winningCard.Suite == trumpSuite) { if (curCard.Value > winningCard.Value) { winningCard = curCard; } } else { // if winning suite is not trump suite, current card is now winner winningCard = curCard; } } else if (curCard.Suite == leadingSuite) { if (winningCard.Suite == leadingSuite && curCard.Value > winningCard.Value) { winningCard = curCard; } } } return(winningCard); }
public override Card GetCard(CardFigure figure, CardSuite suite) { return(new GraphicCard(suite, figure)); }
public Card(CardSuite cardSuite, int cardValue) { CardSuite = cardSuite; CardValue = cardValue; }
/// <summary> /// Set a card face /// </summary> /// <param name="cf"></param> /// <param name="value"></param> private void SetCardFace(CardSuite cf, int value) { var cardPath = CardObject.GetCardFacePath(); LoadCardGraphicFromXAML(cardPath); }
public Card(CardValue value, CardSuite suite) { v = value; s = suite; }
public DebertzRoundCompairer(CardSuite trump, CardSuite first) { Trump = trump; First = first; }
// simulates playing each card in _hand against an in-progress trick, plays random cards to finish and score the trick // returns a dictionary of cards in _hand to number of wins // @param hiddenCards refers to the cards in the deck that could potentialy be played by other players private Dictionary <Card, int> SimulateTrick(TrickContext trick, List <Card> hiddenCards, CardSuite trumpSuite, int playerCount, int simCount) { var playableCards = CardUtils.GetPlayableCards(_hand, trick.LeadingSuite); Dictionary <Card, int> winsByCard = playableCards.Aggregate(new Dictionary <Card, int>(), (acc, card) => { acc[card] = 0; return(acc); }); for (int i = 0; i < simCount; i++) { foreach (var card in playableCards) { var curSimRemainingCards = new List <Card>(hiddenCards); var simPlayedCards = new List <Card>(trick.CardsPlayed); simPlayedCards.Add(card); // each remaining player plays a random card from a randomly generated hand for (int j = simPlayedCards.Count(); j < playerCount; j++) { // rand hand selected from the remaining cards specific to this simulation var randHand = takeRandomCardsFromList(curSimRemainingCards, _hand.Count()); var playableCardsFromRandHand = CardUtils.GetPlayableCards(randHand, trick.LeadingSuite); simPlayedCards.Add(playableCardsFromRandHand[_rand.Next() % playableCardsFromRandHand.Count()]); } var winningCard = CardUtils.CalcWinningCard(simPlayedCards, trumpSuite, trick.LeadingSuite); if (card.Equals(winningCard)) { winsByCard[card]++; } } } return(winsByCard); //Dictionary<Card, double> winPercentagesByCard = new Dictionary<Card, double>(); //foreach(var winCardPair in winsByCard) //{ // double winPctg = winCardPair.Value * 1.0 / SIMULATION_COUNT; // winPercentagesByCard[winCardPair.Key] = winPctg; //} //return winPercentagesByCard; }
public Card(CardSuite suite, CardValue value) { this.suite = suite; this.value = value; }
public Card(Id id, CardNumber number, CardSuite suite) { Id = id; Number = number; Suite = suite; }
public Card(CardSuite suit, int value) { this.suit = suit; this.value = value; }
protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); string suite = null; CardSuite dictionaryKey = CardSuite.NO_SUITE; for (int suiteDecider = 0; suiteDecider < 4; suiteDecider++) { switch (suiteDecider) { case 0: suite = "h"; dictionaryKey = CardSuite.HEARTS; break; case 1: suite = "d"; dictionaryKey = CardSuite.DIAMONDS; break; case 2: suite = "c"; dictionaryKey = CardSuite.CLUBS; break; case 3: suite = "s"; dictionaryKey = CardSuite.SPADES; break; } List <Card> temp = new List <Card>(); for (int i = 0; i < 13; i++) { string cardGetter = (string)suite + (i + 1); temp.Add(new Card(Content.Load <Texture2D>(@"cards/" + cardGetter), Content.Load <Texture2D>("cardBack"), true, dictionaryKey, i + 1)); } for (int i = 0; i < 4; i++) { winSlots[i] = new WinSlot(new Point(385 + 120 * i, 15), Content.Load <Texture2D>("slotHighlight")); } font = Content.Load <SpriteFont>("Font"); suiteDictionary.Add(dictionaryKey, temp); deck = new Deck(25, 10, Content.Load <Texture2D>("cardBack"), Content.Load <Texture2D>("slotHighlight")); } //make all the slot objects Random random = new Random(); for (int i = 0; i < poolSlots.Length; i++) { poolSlots[i] = new Slot(25 + 120 * i, 140, Content.Load <Texture2D>(@"slotHighlight")); for (int c = 0; c < i + 1; c++) { int cardNum; switch (random.Next(4)) { case 0: if (suiteDictionary[CardSuite.CLUBS].Count == 0) { c--; } else { cardNum = random.Next(suiteDictionary[CardSuite.CLUBS].Count - 1); poolSlots[i].addCard(suiteDictionary[CardSuite.CLUBS][cardNum]); suiteDictionary[CardSuite.CLUBS][cardNum].cardsSlot = poolSlots[i]; suiteDictionary[CardSuite.CLUBS].RemoveAt(cardNum); } break; case 1: if (suiteDictionary[CardSuite.DIAMONDS].Count == 0) { c--; } else { cardNum = random.Next(suiteDictionary[CardSuite.DIAMONDS].Count - 1); poolSlots[i].addCard(suiteDictionary[CardSuite.DIAMONDS][cardNum]); suiteDictionary[CardSuite.DIAMONDS][cardNum].cardsSlot = poolSlots[i]; suiteDictionary[CardSuite.DIAMONDS].RemoveAt(cardNum); } break; case 2: if (suiteDictionary[CardSuite.HEARTS].Count == 0) { c--; } else { cardNum = random.Next(suiteDictionary[CardSuite.HEARTS].Count - 1); poolSlots[i].addCard(suiteDictionary[CardSuite.HEARTS][cardNum]); suiteDictionary[CardSuite.HEARTS][cardNum].cardsSlot = poolSlots[i]; suiteDictionary[CardSuite.HEARTS].RemoveAt(cardNum); } break; case 3: if (suiteDictionary[CardSuite.SPADES].Count == 0) { c--; } else { cardNum = random.Next(suiteDictionary[CardSuite.SPADES].Count - 1); poolSlots[i].addCard(suiteDictionary[CardSuite.SPADES][cardNum]); suiteDictionary[CardSuite.SPADES][cardNum].cardsSlot = poolSlots[i]; suiteDictionary[CardSuite.SPADES].RemoveAt(cardNum); } break; } } } List <Card> clubs = suiteDictionary[CardSuite.CLUBS]; List <Card> spades = suiteDictionary[CardSuite.SPADES]; List <Card> diamonds = suiteDictionary[CardSuite.DIAMONDS]; List <Card> hearts = suiteDictionary[CardSuite.HEARTS]; while (deck.cardsInDeck.Count != 24) { int randomCardNumber; switch (random.Next(4)) { case 0: if (clubs.Count != 0) { randomCardNumber = random.Next(clubs.Count - 1); deck.cardsInDeck.Add(clubs[randomCardNumber]); clubs.RemoveAt(randomCardNumber); } break; case 1: if (diamonds.Count != 0) { randomCardNumber = random.Next(diamonds.Count - 1); deck.cardsInDeck.Add(diamonds[randomCardNumber]); diamonds.RemoveAt(randomCardNumber); } break; case 2: if (hearts.Count != 0) { randomCardNumber = random.Next(hearts.Count - 1); deck.cardsInDeck.Add(hearts[randomCardNumber]); hearts.RemoveAt(randomCardNumber); } break; case 3: if (spades.Count != 0) { randomCardNumber = random.Next(spades.Count - 1); deck.cardsInDeck.Add(spades[randomCardNumber]); spades.RemoveAt(randomCardNumber); } break; } } }
public Card(CardValue value, CardSuite suite) { Value = value; Suite = suite; }
public Card(int value, int suite) { v = (CardValue)value; s = (CardSuite)suite; }
public Card(CardNumber number, CardSuite suite) { this.Suite = suite; this.Number = number; this.FacingUp = true; }
public virtual Card GetCard(CardFigure figure, CardSuite suite) { return(new Card(suite, figure)); }
public Card(int cardName, int cardSuite) { this.cardName = (CardName)cardName; this.cardSuite = (CardSuite)cardSuite; }
public Card(CardSuite suite) { Suite = suite; }
public Card(CardSuite suite, CardFace face) { this.suite = suite; this.face = face; }
public Card(CardSuite cardSuite, CardValue cardValue) { this.CardValue = cardValue; this.CardSuite = cardSuite; }
public PlayingCard(CardFaceValue faceValue, CardSuite suite) { FaceValue = faceValue; Suite = suite; }
public GraphicCard(CardPictureBox pb, CardSuite suite, CardFigure figure) : base(suite, figure) { Pb = pb; Pb.SizeMode = PictureBoxSizeMode.Zoom; Pb.Image = IsOpened ? images[this] : faceDownImage; }
public Card(CardSuite suite, CardFigure figure) { Suite = suite; Figure = figure; IsOpened = false; }
public Card(CardSuite suite, int value) { CardSuite = suite; CardValue = value; }
public Card(CardSuite suite, CardRank rank) { Suite = suite; Rank = rank; }
protected bool validateSuite(CardSuite suite) { return(Enum.IsDefined(typeof(CardSuite), suite)); }