Exemple #1
0
        private void lookForAnnonces()
        {
            var found = false;

            room.writeToRoom("Looking for annonces", true, false);
            foreach (var player in room.players)
            {
                Annonce annonce = AnnonceManager.instance.lookForAnnonce(player.hand);
                if (annonce.getValue() != 0)
                {
                    player.write("You have a " + annonce.type.name + " worth " + annonce.getValue(), true, false);
                    room.writeToRoomBut(player,
                                        whatPlayer(player) + "has a " + annonce.type.name + " worth " + annonce.getValue(), true, false);
                    if (player.team == 1)
                    {
                        scoreTeam1 += annonce.getValue();
                    }
                    else
                    {
                        scoreTeam2 += annonce.getValue();
                    }
                    found = true;
                }
            }
            if (!found)
            {
                room.writeToRoom("No annonces were found", true, false);
            }
            room.writeToRoom("Scores :\n\t\tTeam 1 : " + scoreTeam1 + "points\n\t\tTeam 2 : " + scoreTeam2 + "points", true, true);
        }
        private bool isBelote(Hand hand, Annonce annonce)
        {
            var ranks  = new List <Rank>();
            var needed = new List <Rank>();

            foreach (var card in hand.cards)
            {
                ranks.Add(card.rank);
            }
            needed.Add(Rank.KING);
            needed.Add(Rank.QUEEN);

            if (!needed.Except(ranks).Any())
            {
                annonce.type = Type.BELOTE;
            }
            return(annonce.getValue() != 0);
        }
        private bool isTierce(Hand hand, Annonce annonce)
        {
            var ranks = new List <Rank>();

            foreach (var card in hand.cards)
            {
                ranks.Add(card.rank);
            }
            ranks = ranks.OrderBy(q => q.id).ToList();
            for (var i = 0; i < ranks.Count; i++)
            {
                var name = ranks[i].name;
                if (i + 2 <= ranks.Count && ranks[i + 1].name.Equals(name) &&
                    i + 3 <= ranks.Count &&
                    ranks[i + 2].name.Equals(name))
                {
                    annonce.type = Type.TIERCE;
                }
            }
            return(annonce.getValue() != 0);
        }
        private bool isCarre(Hand hand, Annonce annonce)
        {
            var map = new Dictionary <Rank, int>
            {
                { Rank.JACK, 0 },
                { Rank.NINE, 0 },
                { Rank.ACE, 0 },
                { Rank.TEN, 0 },
                { Rank.KING, 0 },
                { Rank.QUEEN, 0 }
            };

            foreach (var card in hand.cards)
            {
                if (isCardFromAnnonce(card.rank))
                {
                    map[card.rank] = map[card.rank] + 1;
                }
            }
            foreach (var entry in map)
            {
                if (entry.Value == 4)
                {
                    if (entry.Key.Equals(Rank.JACK))
                    {
                        annonce.type = Type.CARRE_VALETS;
                    }
                    else if (entry.Key.Equals(Rank.NINE))
                    {
                        annonce.type = Type.CARRE_NEUF;
                    }
                    else
                    {
                        annonce.type = Type.CARRE;
                    }
                }
            }
            return(annonce.getValue() != 0);
        }
        private bool isCent(Hand hand, Annonce annonce)
        {
            var ranks  = new List <Rank>();
            var needed = new List <Rank>();

            foreach (var card in hand.cards)
            {
                ranks.Add(card.rank);
            }
            needed.Add(Rank.SEVEN);
            needed.Add(Rank.EIGHT);
            needed.Add(Rank.NINE);
            needed.Add(Rank.TEN);
            needed.Add(Rank.JACK);
            needed.Add(Rank.QUEEN);
            needed.Add(Rank.KING);
            needed.Add(Rank.ACE);

            if (!needed.Except(ranks).Any())
            {
                annonce.type = Type.CENT;
            }
            return(annonce.getValue() != 0);
        }