Esempio n. 1
0
 public Match(Player[] players)
 {
     this.players   = players;
     deck           = new CompleteDeck();
     firstTeamDeck  = new TeamDeck();
     secondTeamDeck = new TeamDeck();
     firstHand      = true;
 }
Esempio n. 2
0
        public void NewHand()
        {
            maraffa = false;
            Seed s = 0;

            int i = 0;

            List <Card>[] hand = new List <Card> [4];

            deck           = new CompleteDeck();
            firstTeamDeck  = new TeamDeck();
            secondTeamDeck = new TeamDeck();

            deck.Mix();
            deck.Cut();

            //Assegnazione delle mani
            hand[0] = new List <Card>();
            hand[1] = new List <Card>();
            hand[2] = new List <Card>();
            hand[3] = new List <Card>();

            //Assegnazione del primo giocatore della nuova mano
            if (!firstHand)
            {
                if (dealer == 3)
                {
                    dealer = 0;
                }
                else
                {
                    dealer++;
                }
            }

            int k = dealer;

            //Creazione mani
            while (i < 40)
            {
                hand[k].Add(deck[i]);

                //Quando il numero della carta è multiplo di 5 allora o si danno le carte al giocatore successivo
                if ((i + 1) % 5 == 0)
                {
                    if (k != 3)
                    {
                        k++;
                    }
                    else
                    {
                        k = 0;
                    }
                }

                i++;
            }


            if (firstHand)
            {
                for (int j = 0; j < 4; j++)
                {
                    //Identificazione del possessore del 4 di Denari per assegnazione del turnToken
                    if (hand[j].Contains(new Card(Value.Quattro, Seed.Denari)))
                    {
                        dealer = j;
                    }
                }
            }

            //dealer = 3;
            //hand[3][0] = new Card(Value.Asso, Seed.Coppe);
            //hand[3][1] = new Card(Value.Due, Seed.Coppe);
            //hand[3][2] = new Card(Value.Tre, Seed.Coppe);

            //Creazione delle mani
            players[0].Hand = new Hand(hand[0]);
            players[1].Hand = new Hand(hand[1]);
            players[2].Hand = new Hand(hand[2]);
            players[3].Hand = new Hand(hand[3]);

            for (int j = 0; j < 4; j++)
            {
                if (players[dealer].Hand.EntireHand.Contains(new Card(Value.Asso, (Seed)j)) && players[dealer].Hand.EntireHand.Contains(new Card(Value.Due, (Seed)j)) && players[dealer].Hand.EntireHand.Contains(new Card(Value.Tre, (Seed)j)))
                {
                    maraffa = true;
                    s       = (Seed)j;
                }
            }

            var delay = Task.Run(async() =>
            {
                await Task.Delay(400);
                return(true);
            });

            bool prova = delay.Result;

            if (!maraffa)
            {
                players[dealer].BriscolaToken = true;
                players[dealer].BriscolaToken = false;
            }
            else
            {
                int index = 0;

                for (int j = 0; j < 10; j++)
                {
                    if (players[dealer].Hand.EntireHand[j].Value == Value.Asso && players[dealer].Hand.EntireHand[j].CardSeed == s)
                    {
                        index = j;
                    }
                }

                players[dealer].Client.SendMsg(string.Format("MARAFFA {0},{1}", s.ToString(), index));
            }

            firstHand = false;
        }