Exemple #1
0
        // https://motherboard.vice.com/fr/article/8q5na3/pourquoi-on-est-mauvais-a-pierre-feuille-ciseaux-et-comment-devenir-meilleur

        /*
         * Si votre adversaire l'a emporté au tour précédent, jouez une main qui bat sa main précédente (ex. : ciseaux s'il a joué feuille).
         * S'il a perdu, jouez la main qu'il vient de jouer (puisqu'il risque de jouer la main « inférieure »).
         * S'il y a eu match nul, jouez une main « inférieure » à celle qu'il vient de jouer, puisqu'il va sûrement en changer et qu'a priori vous aurez l'avantage.*/

        /// <summary>
        /// Mini inteligence artificiel
        /// </summary>
        /// <param name="Etapes"></param>
        /// <returns></returns>
        public static Etape.posibilite playAI(List <Etape> Etapes)
        {
            Etape DerniereEtap = null;

            //si il s'agit de la premiere etape il ets obliger de jouer de facon random
            if (Etapes == null || Etapes.Count <= 0)
            {
                return(random());
            }
            DerniereEtap = Etapes.Last();
            Etape.posibilite Choix = new Etape.posibilite();

            if (DerniereEtap.GetGagant() == null)
            {
                //S'il y a eu match nul, jouez une main « inférieure » à celle qu'il vient de jouer, puisqu'il va sûrement en changer et qu'a priori vous aurez l'avantage.*/

                switch (DerniereEtap.GetPropositionJ1())
                {
                case Etape.posibilite.Feuille:
                    Choix = Etape.posibilite.Pierre;     //ou puit
                    break;

                case Etape.posibilite.Pierre:
                    Choix = Etape.posibilite.Ciseaux;
                    break;

                case Etape.posibilite.Ciseaux:
                    Choix = Etape.posibilite.Feuille;
                    break;

                case Etape.posibilite.Puit:
                    Choix = Etape.posibilite.Pierre;     //ou ciseai
                    break;

                default:
                    break;
                }
            }
            else if (DerniereEtap.GetGagant().typePlayer == Joueur.type.Reel) //si la derniere main a ete gagner par le joueur reel
            {
                // Si votre adversaire l'a emporté au tour précédent, jouez une main qui bat sa main précédente (ex. : ciseaux s'il a joué feuille).
                switch (DerniereEtap.GetPropositionJ1())
                {
                case Etape.posibilite.Feuille:

                    Choix = Etape.posibilite.Ciseaux;
                    break;

                case Etape.posibilite.Pierre:

                    //                        Rand.Next(Etape.posibilite.Puit, Etape.posibilite.Feuille);
                    Choix = Etape.posibilite.Puit;     //ou feuile
                    break;

                case Etape.posibilite.Ciseaux:
                    Choix = Etape.posibilite.Pierre;     //ou puit
                    break;

                case Etape.posibilite.Puit:
                    Choix = Etape.posibilite.Feuille;
                    break;

                default:
                    break;
                }
            }
            else if (DerniereEtap.GetGagant().typePlayer == Joueur.type.BotAI)
            {
                // S'il a perdu, jouez la main qu'il vient de jouer(puisqu'il risque de jouer la main « inférieure »).
                Choix = DerniereEtap.GetPropositionJ1();
            }

            Console.WriteLine((int)Choix);
            return(Choix);
        }
Exemple #2
0
        /// <summary>
        /// Verifie les coup et resort le joueur victorieux
        /// </summary>
        /// <param name="Coup1"></param>
        /// <param name="J1"></param>
        /// <param name="Coup2"></param>
        /// <param name="J2"></param>
        /// <returns>Joueur gagant</returns>
        public Joueur verif(Etape.posibilite Coup1, Joueur J1, Etape.posibilite Coup2, Joueur J2)
        {
            #region Pierre

            if (Coup1 == Etape.posibilite.Pierre && Coup2 == Etape.posibilite.Pierre)
            {
                return(null);
            }

            if (Coup1 == Etape.posibilite.Pierre && Coup2 == Etape.posibilite.Feuille)
            {
                return(J2);
            }

            if (Coup1 == Etape.posibilite.Pierre && Coup2 == Etape.posibilite.Ciseaux)
            {
                return(J1);
            }

            if (Coup1 == Etape.posibilite.Pierre && Coup2 == Etape.posibilite.Puit)
            {
                return(J2);
            }

            #endregion Pierre

            #region Feuille

            if (Coup1 == Etape.posibilite.Feuille && Coup2 == Etape.posibilite.Pierre)
            {
                return(J1);
            }

            if (Coup1 == Etape.posibilite.Feuille && Coup2 == Etape.posibilite.Feuille)
            {
                return(null);
            }

            if (Coup1 == Etape.posibilite.Feuille && Coup2 == Etape.posibilite.Ciseaux)
            {
                return(J2);
            }

            if (Coup1 == Etape.posibilite.Feuille && Coup2 == Etape.posibilite.Puit)
            {
                return(J1);
            }

            #endregion Feuille

            #region Ciseau

            if (Coup1 == Etape.posibilite.Ciseaux && Coup2 == Etape.posibilite.Pierre)
            {
                return(J2);
            }

            if (Coup1 == Etape.posibilite.Ciseaux && Coup2 == Etape.posibilite.Feuille)
            {
                return(J1);
            }

            if (Coup1 == Etape.posibilite.Ciseaux && Coup2 == Etape.posibilite.Ciseaux)
            {
                return(null);
            }

            if (Coup1 == Etape.posibilite.Ciseaux && Coup2 == Etape.posibilite.Puit)
            {
                return(J2);
            }

            #endregion Ciseau

            #region Puit

            if (Coup1 == Etape.posibilite.Puit && Coup2 == Etape.posibilite.Pierre)
            {
                return(J1);
            }

            if (Coup1 == Etape.posibilite.Puit && Coup2 == Etape.posibilite.Feuille)
            {
                return(J2);
            }

            if (Coup1 == Etape.posibilite.Puit && Coup2 == Etape.posibilite.Ciseaux)
            {
                return(J1);
            }

            if (Coup1 == Etape.posibilite.Puit && Coup2 == Etape.posibilite.Puit)
            {
                return(null);
            }

            #endregion Puit

            #region Egalité

            if (Coup1 == Coup2) //en cas d'egalité, retour d'aucun vainquer
            {
                return(null);
            }

            #endregion Egalité

            return(null);
        }