Exemplo n.º 1
0
        public void predictTrickWinner()
        {
            Trick currentTrick    = tricks[tricks.Count - 1];
            int   winningCard     = currentTrick.GetCurrentWinningCard();
            int   winningPlayerId = currentTrick.GetCurrentWinningPlayer();
            int   remainingPlays  = 4 - currentTrick.GetCurrentTrickSize();
            int   leadSuit        = currentTrick.LeadSuit;

            if (winningCard == -1)
            {
                Console.WriteLine("PIG::predictTrickWinner >> Impossible winningCard");
            }

            //if (Card.GetSuit(winningCard) != leadSuit)
            //{
            //    predictableTrickCut = true;
            //}
            predictableTrickCut = false;

            for (int i = 0, pid = currentTrick.GetNextPlayerId(); i < remainingPlays; i++, pid = (pid + 1) % 4)
            {
                int bestCard = players[pid].GetHighestRankFromSuit(leadSuit, trump);
                if (bestCard == -1)
                {
                    //the player does not have the leadsuit neigher the trump
                    continue;
                }

                if (Card.GetSuit(bestCard) != leadSuit)
                {
                    if (Card.GetSuit(winningCard) == leadSuit || Card.GetRank(bestCard) > Card.GetRank(winningCard))
                    {
                        predictableTrickCut    = true;
                        winningCard            = bestCard;
                        predictableTrickWinner = pid;
                    }
                }
                else if (Card.GetRank(bestCard) > Card.GetRank(winningCard) && !predictableTrickCut)
                {
                    winningCard            = bestCard;
                    predictableTrickWinner = pid;
                }
            }
        }