Exemple #1
0
        // Evenement du type asynchrone qui censé faire jouer chacun de joueur
        public async void Play()
        {
            LinkedList <Joueur> cam = new LinkedList <Joueur>();

            cam.AddLast(this);
            DepotEtPiocheEvent e = new DepotEtPiocheEvent(cam.First);

            Handlers(this, e);
            await Task.Delay(800);
        }
        // Methode asychrone qui lance le jeu (la partie)
        public async void DebutPartie(object sender, DepotEtPiocheEvent e)
        {
            LinkedListNode <Joueur> current = e.Joueur;

            if (!tableDeJeu.IsNull())
            {
                topCarte = tableDeJeu.Peek();
            }

            if (tableDeJeu.Taille() == 0)//la paritie vient de conmencer ,y a pas de carte sur pile de depot
            {
                Console.WriteLine("{0} a joue la carte {1}", current.Value.ToString(), current.Value.CartesEnMain[0].ToString());
                tableDeJeu.Push(current.Value.CartesEnMain[0]);
                current.Value.CartesEnMain.RemoveAt(0);
                current.Value.Listing();
                Console.WriteLine("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
            }
            else
            {
                int count = current.Value.CartesEnMain.Count;
                foreach (Carte a in current.Value.CartesEnMain)
                {
                    if (a.Color == tableDeJeu.Peek().Color || a.ValeurCarte == tableDeJeu.Peek().ValeurCarte)// les joueur va deposer la premier carte adapté
                    {
                        tableDeJeu.Push(a);
                        Carte carteSupp = a;
                        if (a.Color == carteSupp.Color && a.ValeurCarte == carteSupp.ValeurCarte)
                        {
                            e.Joueur.Value.CartesEnMain.Remove(a);
                            Console.WriteLine("------------------------------- Pile de jeu : " + topCarte + "\n" + current.Value.Prenom + " a joué " + a.ToString()
                                              + "\t\tNbre Carte en main : " + current.Value.CartesEnMain.Count);
                            e.Joueur.Value.Listing();
                            Console.WriteLine("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
                            break;
                        }
                    }
                }
                if (e.Joueur.Value.CartesEnMain.Count == 0)//quand un joueur a depose sa dernier carte ,il gargne la partie
                {
                    Console.WriteLine("\n\n\t\t▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓\n\t\t▓▒▓▒▓▒▓▒▓▒▓\t"
                                      + current.Value.Prenom + " " + current.Value.Nom + " a remporté la Partie\t" +
                                      "▓▒▓▒▓▒▓▒\n\t\t▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓▒▓");
                    Console.Read();
                    Environment.Exit(0);
                }

                if (count == e.Joueur.Value.CartesEnMain.Count)//quand un joueur n'a pas de carte,il va piocher une carte sur la pile de pioche
                {
                    pioche(e);
                }
            }
            await Task.Delay(1200); // Asynchronisation avec un delay de 1,2 seconde
        }
 //la methode qui permet au Joueur de pioché
 private void pioche(DepotEtPiocheEvent e)
 {
     Console.WriteLine("------------------------------- Pile de jeu : " + topCarte);
     e.Joueur.Value.CartesEnMain.Add(pileDePioche.Peek());
     Console.WriteLine(e.Joueur.Value.Prenom + " a Pioché la carte " + pileDePioche.Peek().ToString()
                       + "\t\tNbre Carte en main : " + e.Joueur.Value.CartesEnMain.Count);
     pileDePioche.Pop();
     e.Joueur.Value.Listing();
     Console.WriteLine("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
     if (pileDePioche.IsNull())
     {
         Console.WriteLine("\n\t\t╬╬╬╬╬╬╬ ATTENTION !!! LA PILE DE PIOCHE EST VIDE ╬╬╬╬╬╬╬\n");
         RemplirPilePioche();
     }
 }