예제 #1
0
        public void TestIA()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("IA_Evoluee", "Joueur");
            Position pos;

            IA_Evoluee ia = new IA_Evoluee(morpion.PlateauRestreint);

            // Tour 1 -- test règle 1; on vérifie si l'IA joue au centre.
            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);
            morpion.PlateauJeu.Afficher();
            Assert.AreEqual(morpion.Joueur1, morpion.PlateauJeu.GetCase(1, 1).Joueur);

            Console.Write("===========\n\n");

            // On recommence une partie. Tour 2 -- test règle 2; on vérifie si l'IA joue dans une diagonale si le premier joueur joue au centre.
            morpion.Initialisation("Joueur", "IA_Evoluee");
            morpion.Tour(1, 1);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);
            morpion.PlateauJeu.Afficher();
            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(0, 0).Joueur);

            // Tour 3 -- test règle 3: si l'IA détecte une case pouvant faire gagner l'adversaire, elle joue dans cette case.
            morpion.Tour(1, 0);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);
            morpion.PlateauJeu.Afficher();
            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(1, 2).Joueur);
        }
예제 #2
0
        public void TestIA()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("Joueur1", "IABasique");
            Position pos;

            IA_Basique ia = new IA_Basique(morpion.PlateauRestreint);

            // Tour 1

            morpion.Tour(0, 0);

            Assert.AreEqual(null, morpion.PlateauJeu.GetCase(1, 0).Joueur);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);

            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(1, 0).Joueur);

            // Tour 2

            morpion.Tour(2, 1);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);

            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(2, 0).Joueur);

            // Tour 3

            morpion.Tour(1, 2);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);

            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(0, 1).Joueur);

            // Tour 4

            morpion.Tour(1, 1);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);

            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(2, 0).Joueur);

            // Tour 5

            morpion.Tour(2, 2);

            Assert.AreEqual(false, morpion.EnJeu);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);

            Assert.AreEqual(new Position(-1, -1), pos);
        }
예제 #3
0
        public void ParfaiteContreEvoluee()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("IA_Evoluee", "Joueur");
            Position pos;

            IA_Parfaite  perf = new IA_Parfaite(morpion.PlateauRestreint);
            IA_Aleatoire alea = new IA_Aleatoire(morpion.PlateauRestreint);
            IA_Evoluee   evol = new IA_Evoluee(morpion.PlateauRestreint);

            for (int i = 0; i < 9; i++)
            {
                if (i % 2 == 0)
                {
                    pos = perf.Jouer();
                }
                else
                {
                    pos = evol.Jouer();
                }
                morpion.Tour(pos.X, pos.Y);
                morpion.PlateauJeu.Afficher();
            }
        }
예제 #4
0
        public void ParfaiteContreParfaite()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("IA_Evoluee", "Joueur");
            Position pos;

            IA_Parfaite  perf = new IA_Parfaite(morpion.PlateauRestreint);
            IA_Aleatoire alea = new IA_Aleatoire(morpion.PlateauRestreint);
            IA_Evoluee   evol = new IA_Evoluee(morpion.PlateauRestreint);

            for (int i = 0; i < 9; i++)
            {
                if (i % 2 == 0)
                {
                    pos = perf.Jouer();
                }
                else
                {
                    pos = perf.Jouer();
                }
                morpion.Tour(pos.X, pos.Y);
                morpion.PlateauJeu.Afficher();
            }

            // Entre deux IA parfaites, il doit toujours y avoir match nul.
            Assert.AreEqual(morpion.Vainqueur, null);
        }
예제 #5
0
        public void TestReinitialiser()
        {
            Morpion m = new Morpion();

            m.Initialisation("test1", "test2");

            m.Tour(0, 1);
            m.Tour(0, 2);

            m.PlateauJeu.Reinitialiser();

            // On vérifie si le plateau est vide.
            Boolean estVide = true;

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; i < 3; i++)
                {
                    estVide = estVide && (m.PlateauJeu.GetCase(i, j).Joueur == null);
                }
            }
            Assert.AreEqual(true, estVide);
        }
예제 #6
0
        public void TestGetCase()
        {
            Morpion m = new Morpion();

            m.Initialisation("test1", "test2");

            // On vérifie si la case que l'on a obtenue par p.GetCase() a bien été marquée.
            Joueur jCourant = m.JoueurCourant;

            m.Tour(1, 2);
            Assert.AreEqual(jCourant, m.PlateauJeu.GetCase(1, 2).Joueur);

            // On vérifie si getCase() renvoie bien null si on lui demande une case de plateau qui n'existe pas.
            Assert.AreEqual(null, m.PlateauJeu.GetCase(3, 5));
        }
예제 #7
0
        public void TestIA()
        {
            // Test unitaire d'une méthode aléatoire : pose soucis, car il ne pourra jamais être valable à 100%.
            // Nous pouvons seulement nous approcher de ce nombre.

            Morpion morpion = new Morpion();

            morpion.Initialisation("IA_1", "IA_2");

            IA_Aleatoire ia = new IA_Aleatoire(morpion.PlateauRestreint);
            Position     pos;

            morpion.PlateauJeu.Afficher();


            for (int i = 0; i < 9; i++)
            {
                pos = ia.Jouer();
                morpion.Tour(pos.X, pos.Y);
                morpion.PlateauJeu.Afficher();
            }
        }
예제 #8
0
        public void TestClone()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("Joueur1", "Joueur2");
            morpion.Tour(1, 2);

            Plateau plateau2 = morpion.PlateauJeu.Clone(new Morpion());

            // Test de chaque case, impropre
            Assert.AreEqual(null, plateau2.GetCase(0, 0).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(0, 1).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(0, 2).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(1, 0).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(1, 1).Joueur);
            Assert.AreEqual(morpion.Joueur1, plateau2.GetCase(1, 2).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(2, 0).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(2, 1).Joueur);
            Assert.AreEqual(null, plateau2.GetCase(2, 2).Joueur);


            Assert.AreEqual(morpion.PlateauJeu, plateau2);
        }
예제 #9
0
        public void TestIABasique()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("IA_Evoluee", "Joueur");
            Position pos;

            IA_Parfaite ia = new IA_Parfaite(morpion.PlateauRestreint);

            morpion.Tour(1, 1);
            morpion.Tour(0, 1);
            morpion.Tour(0, 0);
            morpion.Tour(2, 2);
            morpion.Tour(2, 0);
            morpion.Tour(0, 2);

            pos = ia.Jouer();
            morpion.Tour(pos.X, pos.Y);
            morpion.PlateauJeu.Afficher();

            Assert.AreEqual(morpion.Joueur1, morpion.PlateauJeu.GetCase(1, 0).Joueur);
        }
예제 #10
0
        public void TestPartie()
        {
            Morpion morpion = new Morpion();

            morpion.Initialisation("Joueur1", "Joueur2");

            // Vérification si le joueur courant est correctement défini.
            Assert.AreEqual(morpion.Joueur1, morpion.JoueurCourant);

            morpion.Tour(0, 0);
            morpion.Tour(0, 1);

            // Vérification si les cartes ont été marquées correctement.
            Assert.AreEqual(morpion.Joueur1, morpion.PlateauJeu.GetCase(0, 0).Joueur);
            Assert.AreEqual(morpion.Joueur2, morpion.PlateauJeu.GetCase(0, 1).Joueur);

            // Vérification si le joueur courant est correctement défini.
            Assert.AreEqual(morpion.Joueur1, morpion.JoueurCourant);

            morpion.Tour(1, 0);
            morpion.Tour(1, 1);

            // Vérification s'il n'y a bien pas de vainqueur encore assigné.
            Assert.AreEqual(null, morpion.Vainqueur);

            // Marquage de la dernière case manquante permettant au joueur 1 de gagner la partie.
            morpion.Tour(2, 0);

            // Vérification si le joueur 1 a bien été assigné comme vainqueur.
            Assert.AreEqual(morpion.Joueur1, morpion.Vainqueur);

            morpion.Initialisation("NouveauJoueur1", "NouveauJoueur2");

            // Vérification si toutes les cases sont vides.
            Boolean casesVides = true;

            for (int i = 0; i < 3; i++)
            {
                for (int j = 0; i < 3; i++)
                {
                    casesVides = casesVides && (morpion.PlateauJeu.GetCase(i, j).Joueur == null);
                }
            }
            Assert.AreEqual(true, casesVides);

            // Vérification si le joueur courant est bien le joueur 1.
            Assert.AreEqual(morpion.Joueur1, morpion.JoueurCourant);

            // Vérification si les joueurs ont bien les noms demandés.
            Assert.AreEqual("NouveauJoueur1", morpion.Joueur1.Nom);
            Assert.AreEqual("NouveauJoueur2", morpion.Joueur2.Nom);

            // Vérification s'il n'y a bien pas de vainqueur encore assigné.
            Assert.AreEqual(null, morpion.Vainqueur);

            morpion.Tour(1, 1);
            morpion.Tour(2, 2);
            morpion.Tour(1, 2);
            morpion.Tour(1, 0);
            morpion.Tour(2, 1);
            morpion.Tour(0, 1);
            morpion.Tour(0, 2);
            morpion.Tour(2, 0);
            morpion.Tour(0, 0);

            // Vérification si la partie est bien notée comme match nul.
            Assert.AreEqual(null, morpion.Vainqueur);
        }