// 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(); } }