Beispiel #1
0
        public Game()
        {
            //Création des dés
            Des = new List <Die>();
            Des.Add(new Die());
            Des.Add(new Die());


            Joueurs = new List <Player>()
            {
                new Player(new IAStrategy(), new List <Card>(Globals.cartesDeBase)),
                new Player(new IAStrategy(), new List <Card>(Globals.cartesDeBase))
            };

            //Initialisation de la pile de cartes
            CartesDisponibles = new Pile();

            foreach (CARD_ID id in Globals.CardInfo.Keys)
            {
                CartesDisponibles.ajouterCarte(id, 6);
            }

            //On enleve les cartes de bases selon le nombre de joueurs a la pile
            for (int i = 0; i < Joueurs.Count; i++)
            {
                foreach (Card c in Globals.cartesDeBase)
                {
                    CartesDisponibles.PrendreCarte(c.ID);
                }
            }
        }
Beispiel #2
0
        public void ChoisirCarte(Player p1, Player p2, Pile p)
        {
            if (p1.argent == 0 || p1.argent > 12)
            {
                return;
            }
            Random rnd = new Random();

            //Liste de cartes que l'IA peut acheter
            List <Card> canBuy = new List <Card>();

            foreach (CARD_ID c in p._cartes.Keys)
            {
                //S'il reste un exemplaire de la carte
                if (p._cartes[c] > 0 && p1.argent >= Globals.CardInfo[c].cout)
                {
                    canBuy.Add(new Card(Globals.CardInfo[c]));
                }
            }

            //Choisit aléatoirement une carte parmi la liste de cartes

            int index = rnd.Next(0, canBuy.Count);

            if (canBuy.Count > 0)
            {
                p1.AcheterCarte(canBuy[index], p);
                Console.WriteLine("Votre adversaire a acheté {0}\n", canBuy[index].nom);
            }
        }
 public void AcheterCarte(Card c, Pile p)
 {
     if (argent >= c.cout)
     {
         cartesEnJeu.ajouterCarte(c.ID, 1);
         argent -= c.cout;
         p.PrendreCarte(c.ID);
     }
 }
 public Player(Strategy uneStrat, List <Card> carteDeBase)
 {
     argent      = 3;
     strategy    = uneStrat;
     cartesEnJeu = new Pile();
     foreach (var i in carteDeBase)
     {
         cartesEnJeu.ajouterCarte(i.ID, 1);
     }
 }
 public void ChoisirCarte(Player p1, Player p2, Pile p)
 {
     //A Faire selon l'interface
 }
Beispiel #6
0
        public void ChoisirCarte(Player p1, Player p2, Pile p)
        {
            Console.WriteLine("Les cartes de votre adversaire : ");
            foreach (var c in p2.cartesEnJeu._cartes)
            {
                if (c.Value != 0)
                {
                    Console.WriteLine("{0} | Couleur : {1} | Activation : {4} | Effet : {2} | Nombre : {3}", c.Key, Globals.CardInfo[c.Key].couleur, Globals.CardInfo[c.Key].descriptionEffet, c.Value, Globals.CardInfo[c.Key].AfficheValeur());
                }
            }

            Console.WriteLine("\nVos cartes : ");
            foreach (var c in p1.cartesEnJeu._cartes)
            {
                if (c.Value != 0)
                {
                    Console.WriteLine("{0} | Couleur : {1} | Activation : {4} | Effet : {2} | Nombre : {3}", c.Key, Globals.CardInfo[c.Key].couleur, Globals.CardInfo[c.Key].descriptionEffet, c.Value, Globals.CardInfo[c.Key].AfficheValeur());
                }
            }

            Console.WriteLine("\nVoulez-vous acheter une carte ?\n Oui : o  Non : n");
            string ouput = Console.ReadLine();

            if (ouput == "o")
            {
                if (p1.argent == 0)
                {
                    Console.WriteLine("Désolé, vous n'avez plus d'argent !\n");
                    return;
                }
                //Liste de cartes que le joueur peut acheter
                List <Card> canBuy = new List <Card>();
                foreach (CARD_ID c in p._cartes.Keys)
                {
                    //S'il reste un exemplaire de la carte
                    if (p._cartes[c] > 0 && p1.argent >= Globals.CardInfo[c].cout)
                    {
                        canBuy.Add(new Card(Globals.CardInfo[c]));
                    }
                }

                Console.WriteLine("Vous pouvez acheter :");
                for (int i = 0; i < canBuy.Count; i++)
                {
                    Console.WriteLine("{0} : {1} | Couleur : {2} | Cout : {3} | Activation : {4} | Effet : {5}", i, canBuy[i].nom, canBuy[i].couleur, canBuy[i].cout, canBuy[i].AfficheValeur(), canBuy[i].descriptionEffet);
                }
                Console.WriteLine("\nAnnuler : a");
                string res = Console.ReadLine();
                if (res == "a")
                {
                    return;
                }
                else
                {
                    p1.AcheterCarte(canBuy[Int16.Parse(res)], p);
                }
            }
            else if (ouput == "n")
            {
                //Il ne se passe rien
            }

            Console.WriteLine("\n-----Fin de votre tour-----\n");
        }
        public void ChoisirCarte(Player p1, Player p2, Pile p)
        {
            if (p1.argent == 0)
            {
                return;
            }

            bool   restaut   = true;
            bool   superette = true;
            bool   cafe      = true;
            bool   mine      = true;
            bool   verger    = true;
            bool   bleu      = false;
            bool   rouge     = false;
            bool   vert      = false;
            Random rnd       = new Random();

            //Liste de cartes que le joueur peut acheter
            List <Card> canBuy = new List <Card>();

            foreach (CARD_ID c in p._cartes.Keys)
            {
                //S'il reste un exemplaire de la carte
                if (p._cartes[c] > 0 && p1.argent >= Globals.CardInfo[c].cout)
                {
                    canBuy.Add(new Card(Globals.CardInfo[c]));

                    /*Vérifier si restaurant, superette et café sont encore achetables. S'ils ne sont pas achetables, le bool reste true pour faire
                     * comme s'il l'avait déjà et donc passer l'achat
                     */
                    if (c == CARD_ID.RESTAURANT)
                    {
                        restaut = false;
                    }
                    if (c == CARD_ID.SUPERETTE)
                    {
                        superette = false;
                    }
                    if (c == CARD_ID.CAFE)
                    {
                        cafe = false;
                    }

                    //On vérifie s'il reste des cartes bleus, rouges et vertes
                    if (Globals.CardInfo[c].couleur == COULEUR.BLEU)
                    {
                        bleu = true;
                    }
                    if (Globals.CardInfo[c].couleur == COULEUR.ROUGE)
                    {
                        rouge = true;
                    }
                    if (Globals.CardInfo[c].couleur == COULEUR.VERT)
                    {
                        vert = true;
                    }
                }
            }



            //Acheter en priorité restaurant, superette, café
            foreach (CARD_ID c in p1.cartesEnJeu._cartes.Keys)
            {
                if (c == CARD_ID.RESTAURANT)
                {
                    restaut = true;
                }
                if (c == CARD_ID.SUPERETTE)
                {
                    superette = true;
                }
                if (c == CARD_ID.CAFE)
                {
                    cafe = true;
                }
            }

            foreach (Card c in canBuy)
            {
                if (!restaut && c.ID == CARD_ID.RESTAURANT)
                {
                    p1.AcheterCarte(c, p);
                    return;
                }

                if (!superette && c.ID == CARD_ID.SUPERETTE)
                {
                    p1.AcheterCarte(c, p);
                    return;
                }

                if (!cafe && c.ID == CARD_ID.CAFE)
                {
                    p1.AcheterCarte(c, p);
                    return;
                }
            }

            /* Si l'execution arrive ici, l'IA a soit dans sa main au moins un Restaurant, une Superette et un Café ou alors
             * il ne pouvait pas les acheter. S'il ne peut pas les acheter, il passe son tour.
             */
            if (restaut && superette && cafe && mine && verger)
            {
                int index = 0;
                //Acheter en priorité des bleus
                if (bleu)
                {
                    while (true)
                    {
                        index = rnd.Next(0, canBuy.Count);
                        if (canBuy[index].couleur == COULEUR.BLEU)
                        {
                            p1.AcheterCarte(canBuy[index], p);
                            return;
                        }
                    }
                }
                //S'il ne peut pas acheter de bleu, il achete une rouge
                if (rouge)
                {
                    while (true)
                    {
                        index = rnd.Next(0, canBuy.Count);
                        if (canBuy[index].couleur == COULEUR.ROUGE)
                        {
                            p1.AcheterCarte(canBuy[index], p);
                            return;
                        }
                    }
                }
                //S'il ne peut pas acheter de rouge, il achete une verte
                if (vert)
                {
                    while (true)
                    {
                        index = rnd.Next(0, canBuy.Count);
                        if (canBuy[index].couleur == COULEUR.VERT)
                        {
                            p1.AcheterCarte(canBuy[index], p);
                            return;
                        }
                    }
                }
            }
        }