예제 #1
0
        static void Main(string[] args)
        {
            Player cooper = new Player("Cooper");
            Deck   deck   = new Deck();

            cooper.Draw(deck);
            Console.WriteLine(cooper.hand[0].stringVal + cooper.hand[0].suit);
            Console.WriteLine(cooper.Discard(0));
            Console.WriteLine(cooper.Discard(5));
            // Console.WriteLine(deck.Deal().stringVal);
            // Console.WriteLine("Cards in Deck: "+ deck.cards.Count);
            // deck.Reset();
            // Console.WriteLine("Cards in Deck: "+ deck.cards.Count);
            // deck.Shuffle();
            // foreach(Card card in deck.cards)
            // {
            //     Console.WriteLine("Card: "+ card.stringVal + " " + card.suit + " " + card.val);
            // }
        }
예제 #2
0
        private static bool UpdateChosenCard(Trick trick, Player player, Player currentPlayer, int number)
        {
            bool askHumanForChoice;
            var  chosenCard = player.SortedHand()[number - 1];

            trick.Cards.Add(chosenCard);
            player.Discard(chosenCard);
            askHumanForChoice = false;
            Console.WriteLine(String.Format("{0} plays {1}", player.Name, chosenCard));
            if (player == currentPlayer)
            {
                trick.FirstCard = chosenCard;
            }
            return(askHumanForChoice);
        }
예제 #3
0
        public static void ForComputer(Trick trick, Player player, Player currentPlayer)
        {
            Card chosenComputerCard;

            if (player == currentPlayer)        //rozpoczyna lewę
            {
                if (AtLeastOneHeartWasPlayed()) //rozpoczyna lewę i kiery zostały już zagrane w tej rundzie
                {
                    chosenComputerCard = LowestCard(player);
                    trick.FirstCard    = chosenComputerCard;
                }
                else
                {
                    if (AtLeastOneNotHeartInHand(player)) // rozpoczyna lewę, kiery nie zostały jeszcze zagrane i MA na ręce inne kolory niż kier
                    {
                        chosenComputerCard = LowestCardNotHeart(player);
                        trick.FirstCard    = chosenComputerCard;
                    }
                    else // rozpoczyna lewę, kiery nie zostały jeszcze zagrane, ale ma tylko kiery
                    {
                        chosenComputerCard = LowestCard(player);
                        trick.FirstCard    = chosenComputerCard;
                    }
                }
            }
            else // nie rozpoczyna lewy
            {
                trick.FirstCard = GameController.DetermineTrickWinningCard(trick);
                var currentSuit = trick.FirstCard.Suit;

                if (HaveHigherCardInMatchingSuitNotHeartsOrSpades(trick, player, currentSuit)) // nie rozpoczyna lewy i ma wyższą kartę w obowiązującym kolorze, (nie pik i nie kier!)
                {
                    chosenComputerCard = HighestCardInMatchingSuit(player, currentSuit);
                }
                else if (HaveMatchingSuit(player, currentSuit)) //nie rozpoczyna lewy, ma tylko niższe karty w obowiązującym kolorze
                {
                    chosenComputerCard = LowestCardInMatchingSuit(player, currentSuit);
                }
                else // nie rozpoczyna lewy, nie ma kart w obowiązującym kolorze
                {
                    if (HighestValueCardSpade(player) != null) //ma Asa, Króla lub Damę pik
                    {
                        chosenComputerCard = HighestValueCardSpade(player); //zagrywa w kolejności Damę, Króla lub Asa pik
                    }
                    else if (HighestCardHeart(player) != null)              // Ma kiery
                    {
                        chosenComputerCard = HighestCardHeart(player);      // zagrywa najwyższego kiera
                    }
                    else
                    {
                        chosenComputerCard = HighestCard(player); // zagrywa najwyższą kartę
                    }
                }
            }
            trick.Cards.Add(chosenComputerCard);
            player.Discard(chosenComputerCard);

            Game.AllPlayedCards.Add(chosenComputerCard);

            GameView.ChosenComputerCard(player, chosenComputerCard);
        }