コード例 #1
0
        /// <summary>
        /// Check to see if a hand is a valid defense hand
        /// </summary>
        /// <param name="defenseHand"></param>
        /// <param name="attackHand"></param>
        /// <returns></returns>
        public bool IsValidDefenseHand(PlayingCards defenseHand, PlayingCards attackHand)
        {
            bool isValid = false;

            //www.java2s.com/Tutorial/CSharp/0450__LINQ/Sortobjectbyitsproperty.htm
            //^^^^^^^^^^^ Found here
            defenseHand.Sort((c1, c2) => c1.suit.CompareTo(c2.suit));
            attackHand.Sort((c1, c2) => c1.suit.CompareTo(c2.suit));
            //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            if (attackHand.Count() == defenseHand.Count())
            {
                for (int index = 0; index < attackHand.Count(); index++)
                {
                    if (defenseHand.ElementAt(index).suit == attackHand.ElementAt(index).suit)
                    {
                        if (defenseHand.ElementAt(index).rank > attackHand.ElementAt(index).rank)
                        {
                            isValid = true;
                        }
                        else
                        {
                            isValid = false;
                        }
                    }
                    else
                    {
                        isValid = false;
                    }
                }
            }
            return(isValid);
        }
コード例 #2
0
ファイル: MissionVote.cs プロジェクト: jandar78/Avalon
 public MissionVote(PlayingCards role)
 {
     InitializeComponent();
     if (role == PlayingCards.MERLIN || role == PlayingCards.PERCIVAL || role == PlayingCards.SERVANT_OF_ARTHUR) {
         button2.Enabled = false;
     }
 }
コード例 #3
0
        private void DrawFirstTwoCards()
        {
            //Draw first two cards
            for (int i = 0; i < 2; i++)
            {
                foreach (var player in players)
                {
                    PlayingCards card = playingCardsDeck.Draw();
                    player.Hand.Add(card);
                }
            }

            //Sort hand by
            foreach (var player in players)
            {
                player.Hand = player.Hand.SortHandByDescending();
            }

            //Determine Score
            foreach (var player in players)
            {
                player.Score = GetHandScore(player.Hand);
                IsOverThan_21(player);
            }
        }
コード例 #4
0
        /// <summary>
        /// 显示玩家与电脑的牌.
        /// </summary>
        private void ShowAfterTakeFirstTwoCard()
        {
            // 清除已有的图片
            tlpComputer.Controls.Clear();

            PlayingCards c1 = computerPlayer.GetPlayingCards(0);

            c1.IsShowOnTable = false;
            tlpComputer.Controls.Add(GetDisplayPicBox(c1));

            PlayingCards c2 = computerPlayer.GetPlayingCards(1);

            c2.IsShowOnTable = true;
            tlpComputer.Controls.Add(GetDisplayPicBox(c2));



            // 清除已有的图片
            tlpUser.Controls.Clear();

            for (int i = 0; i < 2; i++)
            {
                PlayingCards card = player.GetPlayingCards(i);
                card.IsShowOnTable = true;
                tlpUser.Controls.Add(GetDisplayPicBox(card));
            }
        }
コード例 #5
0
        public void GetRandomCard(Random rnd, Game currentGame, HashSet <PlayingCards> cardsOntable, string playerOrDealer)
        {
            bool tryAgain = true;

            while (tryAgain)
            {
                int r = rnd.Next(currentGame.Deck.deck.Count());

                var newInstanceOftheCard = new PlayingCards()
                {
                    Card = currentGame.Deck.deck[r].Card, Points = currentGame.Deck.deck[r].Points, Show = currentGame.Deck.deck[r].Show, Picture = currentGame.Deck.deck[r].Picture, Id = currentGame.Deck.deck[r].Id
                };

                var didNotExist = cardsOntable.Add(newInstanceOftheCard);

                if (didNotExist == false)
                {
                    tryAgain = true;
                }
                else
                {
                    if (playerOrDealer == "player")
                    {
                        currentGame.Player.Hand.Add(newInstanceOftheCard);
                    }
                    else
                    {
                        currentGame.Dealer.Hand.Add(newInstanceOftheCard);
                    }
                    tryAgain = false;
                }
            }
        }
コード例 #6
0
        public void GetRandomCard(Random rnd, List <PlayingCards> deck, HashSet <PlayingCards> fourCards)
        {
            bool tryAgain = true;

            while (tryAgain)
            {
                int r = rnd.Next(deck.Count());

                var newInstanceOftheCard = new PlayingCards()
                {
                    Card = deck[r].Card, Points = deck[r].Points, Show = deck[r].Show, Picture = deck[r].Picture, Id = deck[r].Id
                };

                var fittingname = fourCards.Add(newInstanceOftheCard);

                if (fittingname == false)
                {
                    tryAgain = true;
                }
                else
                {
                    tryAgain = false;
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// used to build a hand of attack cards
 /// </summary>
 /// <param name="cards">PlayingCards (or Hand)</param>
 /// <returns>PlayingCards (or Hand)</returns>
 public PlayingCards Attack(PlayingCards cards)
 {
     foreach (PlayingCard card in cards)
     {
         m_Hand += card;
     }
     return(m_Hand);
 }
コード例 #8
0
        protected override void onDealStart()
        {
            PlayingCards.Shuffle();

            PlayerHandScores.Clear();

            handOutCardsToPlayers();

            setBlinds();
        }
コード例 #9
0
 /// <summary>
 /// Not sure about this...not quite complete
 /// may have to get rid of it entirely
 /// Suppose to up date the gui based on a players hand
 /// </summary>
 /// <param name="hand"></param>
 public void Update(int playerNum, PlayingCards hand)
 {
     spPlayerHand.Children.Clear();
     foreach (PlayingCard card in hand)
     {
         spPlayerHand.Children.Add(new CardBox(card, (Orientation)((0 == (int)myOrientation) ? 1 : 0)));
         RealignCards(spPlayerHand);
     }
     lblPlayerNum.Content = "Player " + playerNum.ToString();
 }
コード例 #10
0
        /// <summary>
        /// 显示计算机玩家的所有牌.
        /// </summary>
        private void ShowComputerAllCards()
        {
            // 清除已有的图片
            tlpComputer.Controls.Clear();

            for (int i = 0; i < computerPlayer.GetPlayingCardsCount(); i++)
            {
                PlayingCards card = computerPlayer.GetPlayingCards(i);
                card.IsShowOnTable = true;
                tlpComputer.Controls.Add(GetDisplayPicBox(card));
            }
        }
コード例 #11
0
 protected override void handOutCardsToPlayers()
 {
     foreach (IPlayer player in Players)
     {
         player.HoleCards = new List <ICard>()
         {
             PlayingCards[0], PlayingCards[1]
         };
         PlayingCards.Remove(PlayingCards.First());
         PlayingCards.Remove(PlayingCards.First());
     }
 }
コード例 #12
0
    protected internal override PlayingCard?MoveOutCards(List <PlayingCard> movedCards)
    {
        Debug.Assert(PlayingCards.Count >= movedCards.Count);
        for (int i = movedCards.Count - 1; i >= 0; i--)
        {
            var c = PlayingCards[0];
            PlayingCards.RemoveAt(0);

            PlayingCanvas.Children.Remove(c);
            PlayingCanvas.Children.Add(c);
        }
        return(null);
    }
コード例 #13
0
        public void Shuffle()
        {
            List <PlayingCard> newDeck = new List <PlayingCard>();
            Random             random  = new Random();

            for (int i = PlayingCards.Count; i > 0; i--)
            {
                int randomNum = random.Next(i);
                newDeck.Add(PlayingCards[randomNum]);
                PlayingCards.RemoveAt(randomNum);
            }

            PlayingCards = newDeck;
        }
コード例 #14
0
 public bool InsertBottomCard(PlayingCard card)
 {
     try
     {
         PlayingCards.Insert(0, card);
         Length++;
         return(true);
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         ch.PressKeyToContinue();
         throw;
     }
 }
コード例 #15
0
 public PlayingCard GetTopCard()
 {
     try
     {
         PlayingCard card = PlayingCards[PlayingCards.Count - 1];
         PlayingCards.RemoveAt(PlayingCards.Count - 1);
         Length--;
         return(card);
     }
     catch (Exception e)
     {
         Console.WriteLine("An error occured.");
         Console.WriteLine(e.Message);
         ch.PressKeyToContinue();
         return(null);
     }
 }
コード例 #16
0
        /// <summary>
        /// 要牌.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnHit_Click(object sender, EventArgs e)
        {
            // 玩家要牌.
            game.PlayerHit(player);


            // 显示新加的牌.
            PlayingCards card = player.GetPlayingCards(player.GetPlayingCardsCount() - 1);

            card.IsShowOnTable = true;
            tlpUser.Controls.Add(GetDisplayPicBox(card));

            if (player.IsStand)
            {
                btnHit.Visible = false;
            }
        }
コード例 #17
0
        protected override void returnCardsToDeck()
        {
            foreach (IPlayer player in Players)
            {
                foreach (ICard card in player.HoleCards)
                {
                    PlayingCards.Add(card);
                }

                player.HoleCards.Clear();
            }

            foreach (ICard card in Table.CommunityCards)
            {
                PlayingCards.Add(card);
            }

            Table.CommunityCards.Clear();
        }
コード例 #18
0
        /// <summary>
        /// 取得指定牌的图片.
        /// </summary>
        /// <param name="card"></param>
        /// <returns></returns>
        private PictureBox GetDisplayPicBox(PlayingCards card)
        {
            string fileName = @"pic\BackGround.jpg";

            if (card.IsShowOnTable)
            {
                // 牌是要显示正面的.
                fileName = String.Format(@"pic\{0}_{1}.jpg",
                                         card.Suit, card.CardDisplayValue);
            }

            PictureBox result = new PictureBox()
            {
                Dock     = DockStyle.Fill,
                SizeMode = PictureBoxSizeMode.StretchImage,
                Image    = new Bitmap(fileName),
            };

            return(result);
        }
コード例 #19
0
        /// <summary>
        /// Checks to see if a hand is a valid attack hand
        /// </summary>
        /// <param name="attackHand"></param>
        /// <returns></returns>
        public bool IsValidAttackHand(PlayingCards attackHand)
        {
            bool isValid = false;

            if (attackHand.Count() > 1)
            {
                for (int index = 0; index < attackHand.Count(); index++)
                {
                    if (index != 0)
                    {
                        if (attackHand.ElementAt(index - 1).rank == attackHand.ElementAt(index).rank)
                        {
                            isValid = true;
                        }
                    }
                }
            }
            else
            {
                isValid = true;
            }
            return(isValid);
        }
コード例 #20
0
        protected override void onLicitation()
        {
            foreach (GameStage gameStage in Enum.GetValues(typeof(GameStage)))
            {
                IPlayer nextPlayer = null;

                if (gameStage == GameStage.Flop)
                {
                    for (int i = 0; i < 3; ++i)
                    {
                        Table.CommunityCards.Add(PlayingCards.First());
                        PlayingCards.Remove(PlayingCards.First());
                    }
                }
                else if (gameStage != GameStage.Preflop)
                {
                    Table.CommunityCards.Add(PlayingCards.First());
                    PlayingCards.Remove(PlayingCards.First());
                }

                if (gameStage == GameStage.Preflop)
                {
                    nextPlayer = GetNextActivePlayer(Players.Where(x => x.Blind == Blind.Big).First());
                }
                else
                {
                    nextPlayer = Players.Where(x => x.Blind == Blind.Small).First();
                }

                notify();

                while (nextPlayer != null && (!allPlayersTookAction() || isBiggerBetToCall() || !lastPlayerCalled()) && !isOnePlayerActiveLeft() && !allActivePlayersChecked() && !allButOnePlayerFolded())
                {
                    if (nextPlayer != null && nextPlayer.CanTakeAction)
                    {
                        while (!takeAction(nextPlayer))
                        {
                            ;
                        }
                    }

                    notify();

                    nextPlayer = GetNextActivePlayer(nextPlayer);
                }

                foreach (IPlayer activePlayer in Players.Where(x => x.PlayerState != PlayerState.Folded))
                {
                    Table.Pot       += activePlayer.Bet;
                    activePlayer.Bet = 0;

                    if (activePlayer.CanTakeAction && Players.Where(x => x.CanTakeAction).Count() > 1)
                    {
                        activePlayer.PlayerState = PlayerState.Active;
                    }

                    if (Players.Where(x => x.PlayerState == PlayerState.Folded).Count() == Players.Count - 1)
                    {
                        return; //if everyone folded except one, stop licitation round.
                    }
                }
            }
        }
コード例 #21
0
 public override void CheckStack()
 => Debug.Assert(PlayingCards.All(c => c.IsFaceUp));
コード例 #22
0
 public void init()
 {
     _cards = new PlayingCards();
 }
コード例 #23
0
        public override void OnSpeech(SpeechEventArgs e)
        {
            #region Here is the list of Random Words you can use
            string dat_Facet              = TalkingNPCsXMLReader.RandomName("dat_Facet");
            string dat_TownRegion         = TalkingNPCsXMLReader.RandomName("dat_TownRegion");
            string dat_DungeonRegion      = TalkingNPCsXMLReader.RandomName("dat_DungeonRegion");
            string dat_NoHousingRegion    = TalkingNPCsXMLReader.RandomName("dat_NoHousingRegion");
            string dat_Other              = TalkingNPCsXMLReader.RandomName("dat_Other");
            string dat_Shrine             = TalkingNPCsXMLReader.RandomName("dat_Shrine");
            string dat_article1           = TalkingNPCsXMLReader.RandomName("dat_article");
            string dat_article2           = TalkingNPCsXMLReader.RandomName("dat_article");
            string dat_noun1              = TalkingNPCsXMLReader.RandomName("dat_noun");
            string dat_noun2              = TalkingNPCsXMLReader.RandomName("dat_noun");
            string dat_noun3              = TalkingNPCsXMLReader.RandomName("dat_noun");
            string dat_noun4              = TalkingNPCsXMLReader.RandomName("dat_noun");
            string dat_verb1              = TalkingNPCsXMLReader.RandomName("dat_verb");
            string dat_verb2              = TalkingNPCsXMLReader.RandomName("dat_verb");
            string dat_verbing1           = TalkingNPCsXMLReader.RandomName("dat_verbing");
            string dat_verbing2           = TalkingNPCsXMLReader.RandomName("dat_verbing");
            string dat_verb3rd1           = TalkingNPCsXMLReader.RandomName("dat_verb3rd");
            string dat_verb3rd2           = TalkingNPCsXMLReader.RandomName("dat_verb3rd");
            string dat_verbed1            = TalkingNPCsXMLReader.RandomName("dat_verbed");
            string dat_verbed2            = TalkingNPCsXMLReader.RandomName("dat_verbed");
            string dat_preposition1       = TalkingNPCsXMLReader.RandomName("dat_preposition");
            string dat_preposition2       = TalkingNPCsXMLReader.RandomName("dat_preposition");
            string dat_adj1               = TalkingNPCsXMLReader.RandomName("dat_adj");
            string dat_adj2               = TalkingNPCsXMLReader.RandomName("dat_adj");
            string dat_Greeting           = TalkingNPCsXMLReader.RandomName("dat_Greeting");
            string dat_Language1          = TalkingNPCsXMLReader.RandomName("dat_Language");
            string dat_Language2          = TalkingNPCsXMLReader.RandomName("dat_Language");
            string dat_Language3          = TalkingNPCsXMLReader.RandomName("dat_Language");
            string dat_Armor              = TalkingNPCsXMLReader.RandomName("dat_Armor");
            string dat_Creature1          = TalkingNPCsXMLReader.RandomName("dat_Creature");
            string dat_Creature2          = TalkingNPCsXMLReader.RandomName("dat_Creature");
            string dat_Room1              = TalkingNPCsXMLReader.RandomName("dat_Room");
            string dat_Room2              = TalkingNPCsXMLReader.RandomName("dat_Room");
            string dat_Furniture1         = TalkingNPCsXMLReader.RandomName("dat_Furniture");
            string dat_Furniture2         = TalkingNPCsXMLReader.RandomName("dat_Furniture");
            string dat_Liquid1            = TalkingNPCsXMLReader.RandomName("dat_Liquid");
            string dat_Number1            = TalkingNPCsXMLReader.RandomName("dat_Number");
            string dat_PlayingCards       = TalkingNPCsXMLReader.RandomName("dat_PlayingCards");
            string dat_MinocShop          = TalkingNPCsXMLReader.RandomName("dat_MinocShop");
            string dat_MinocShopQuestItem = TalkingNPCsXMLReader.RandomName("dat_MinocShopQuestItem");
            #endregion

            string playername = e.Mobile.Name;
            string speech     = e.Speech.ToLower();

            #region Player says "Hi"
            for (int i = 0; i < Greetings.Length; i++)
            {
                if (speech == Greetings[i])
                {
                    switch (Utility.Random(4))  //picks one of the following
                    {
                    case 0:
                    { Say(String.Format("{0} {1}, do you want to play your favorite game?", dat_Greeting, playername, dat_verb1, dat_Creature1)); break; }

                    case 1:
                    { Say(String.Format("Would you like to play {0} cards?", dat_adj1)); break; }

                    case 2:
                    { Say(String.Format("People come from {0} to play cards here.", dat_TownRegion)); break; }

                    case 3:
                    { Say(String.Format("{0}, {1} want to play?", playername, dat_Greeting)); break; }
                    }
                }
            }
            #endregion

            #region Play says "Yes" or some other response
            for (int i = 0; i < Response.Length; i++)
            {
                if (speech == Response[i])
                {
                    if (m_ItemHasBeenReturned == true)
                    {
                        switch (Utility.Random(4))  //picks one of the following
                        {
                        case 0:
                        {
                            Say(String.Format("{0} draw a card and let me see it.", playername));
                            break;
                        }

                        case 1:
                        {
                            dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1);
                            Say(String.Format("{0} my {1} card vs your {2} card..", playername, dat_adj1, dat_adj1));
                            break;
                        }

                        case 2:
                        {
                            dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1);
                            Say(String.Format("Place your card back into my deck and let's see if you a winner.", dat_adj1));
                            break;
                        }

                        case 3:
                        {
                            dat_article1 = char.ToUpper(dat_article1[0]) + dat_article1.Substring(1);
                            Say(String.Format("Be a good {0} and deal the cards.", dat_Creature1, dat_adj1));
                            break;
                        }
                        }


                        //Choose Item Location
                        int x = Location.X - 1;
                        int y = Location.Y;
                        int z = Map.GetAverageZ(x, y);

                        if (Map.CanFit(x, y, Location.Z, 1))
                        {
                            Item item = new PlayingCards();
                            item.Name = dat_PlayingCards;
                            item.MoveToWorld(new Point3D(x, y, Location.Z), Map);
                            m_ItemHasBeenReturned = false;
                            HighCardBettyItemTimer t = new HighCardBettyItemTimer();
                            t.Start();
                        }
                        else if (Map.CanFit(x, y, z, 1))
                        {
                            Item item = new PlayingCards();
                            item.Name = dat_PlayingCards;
                            item.MoveToWorld(new Point3D(x, y, z), Map);
                            m_ItemHasBeenReturned = false;
                            HighCardBettyItemTimer t = new HighCardBettyItemTimer();
                            t.Start();
                        }
                    }
                    else
                    {
                        Say(String.Format("Let me see the card, {0} or {1}.  Hurry any card will due!", dat_adj1, dat_adj2));
                    }
                }
            }
            #endregion
        }
コード例 #24
0
        public void Shuffle()
        {
            Random rand = new Random();

            PlayingCards = PlayingCards.OrderBy(item => rand.Next()).ToList();
        }
コード例 #25
0
ファイル: Program.cs プロジェクト: jzacka1/Games-Control
        static void Main(string[] args)
        {
            //Create players
            Player player1 = new Player()
            {
                Name      = "James",
                Hand      = new List <Card>(),
                IsPlaying = true
            };

            Player player2 = new Player()
            {
                Name      = "Michael",
                Hand      = new List <Card>(),
                IsPlaying = true
            };

            Player player3 = new Player()
            {
                Name      = "Johnny",
                Hand      = new List <Card>(),
                IsPlaying = true
            };

            //Put players into list
            List <Player> players = new List <Player>()
            {
                player1, player2, player3
            };

            //POKER GAME 1
            using (Poker poker = new Poker(players)){
                //PlayingCardsDeck.deck.ShuffleDeck();

                poker.playingCardsDeck.ShuffleDeck();

                foreach (var player in players)
                {
                    PlayingCards card = poker.playingCardsDeck.Draw();

                    //Give Player a card
                    player.Hand.Add(card);
                }

                //Return cards to deck
                foreach (var player in players)
                {
                    foreach (PlayingCards card in player.Hand)
                    {
                        poker.playingCardsDeck.Add(card);
                    }

                    player.Hand.Clear();
                }
            }

            //POKER GAME 2
            using (Poker poker = new Poker(players))
            {
                poker.playingCardsDeck.ShuffleDeck();

                foreach (var player in players)
                {
                    PlayingCards card = poker.playingCardsDeck.Draw();

                    //Give Player a card
                    player.Hand.Add(card);
                }

                //Return cards to deck
                foreach (var player in players)
                {
                    foreach (PlayingCards card in player.Hand)
                    {
                        poker.playingCardsDeck.Add(card);
                    }

                    player.Hand.Clear();
                }
            }
            //BlackJack Game 1
            using (BlackJack blackJack = new BlackJack(players))
            {
                //Return cards to deck
                foreach (var player in players)
                {
                    foreach (PlayingCards card in player.Hand)
                    {
                        PlayingCardsDeck.deck.Add(card);
                    }

                    player.Hand.Clear();
                }
            }

            Console.WriteLine("All Games Played");
        }