예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Bataille navale");
            Console.WriteLine("Bonjour joueur 1 ");
            UnJoueurHumainDerrièreLaConsole joueur1 = new
                                                      UnJoueurHumainDerrièreLaConsole();

            Console.WriteLine("Bonjour joueur 2 ");
            UnJoueurHumainDerrièreLaConsole joueur2 = new
                                                      UnJoueurHumainDerrièreLaConsole();
            PartieDeBatailleNavale partie = new PartieDeBatailleNavale(joueur1,
                                                                       joueur2);
            bool nouvellePartie;

            do
            {
                partie.ChoisirLesRôlesDeDépartDesJoueurs();
                Console.WriteLine("Le joueur {0} est le premier attaquant", partie.Attaquant.Pseudo);

                partie.PréparerLaBataille();
                Console.WriteLine("La partie commence maintenant");
                partie.JouerLaPartie();

                Console.WriteLine("Nouvelle partie ? (O/N) :");
                ConsoleKeyInfo keyinfo = Console.ReadKey();
                if (keyinfo.KeyChar == 'O' || keyinfo.KeyChar == 'o')
                {
                    nouvellePartie = true;
                }
                else
                {
                    nouvellePartie = false;
                }
            }while (nouvellePartie);
        }
예제 #2
0
        public void Phase1_2_PartieDeBatailleNavale_Constructeur()
        {
            // vérification du constructeur public
            Type            t = typeof(PartieDeBatailleNavale);
            ConstructorInfo constructeurPublique = t.GetConstructor(new Type[] { typeof(IContratDuJoueurDeBatailleNavale), typeof(IContratDuJoueurDeBatailleNavale) });

            Assert.IsNotNull(constructeurPublique, "PartieDeBatailleNavale doit avoir un constructeur public attendant en paramètre 2 instance de IContratDuJoueurDeBatailleNavale");
            bool ThrowException = false;

            try
            {
                PartieDeBatailleNavale p = new PartieDeBatailleNavale(null, null);
                p = new PartieDeBatailleNavale(null, new joueurTest("joueur test"));
                p = new PartieDeBatailleNavale(new joueurTest("joueur test"), null);
            }
            catch (ArgumentNullException)
            {
                ThrowException = true;
            }
            Assert.IsTrue(ThrowException, "La construction de PartieDeBatailleNavale ne doit pas accepter les paramètes null");
        }
예제 #3
0
        public void Phase1_5_PartieDeBatailleNavale_JouerLaPartie()
        {
            for (int x = 0; x < 100; x++)
            {
                try
                {
                    IContratDuJoueurDeBatailleNavale joueur1 = new joueurTest("joueur 1");

                    IContratDuJoueurDeBatailleNavale joueur2 = new joueurTest("joueur 2");

                    PartieDeBatailleNavale partie = new
                                                    PartieDeBatailleNavale(joueur1, joueur2);
                    partie.ChoisirLesRôlesDeDépartDesJoueurs();
                    partie.PréparerLaBataille();
                    partie.JouerLaPartie();
                }
                catch (Exception)
                {
                    Assert.Fail("Il semble encore y avoir des anomalies dans le déroulement de la partie...");
                }
            }
        }
예제 #4
0
        Phase1_3_PartieDeBatailleNavale_ChoisirLesRôlesDeDépartDesJoueurs()
        {
            IContratDuJoueurDeBatailleNavale joueur1 = new joueurTest("joueur 1");
            IContratDuJoueurDeBatailleNavale joueur2 = new joueurTest("joueur 2");
            PartieDeBatailleNavale           partie  = new PartieDeBatailleNavale(joueur1,
                                                                                  joueur2);
            // partie.ChoisirLesRôlesDeDépartDesJoueurs();
            // IContratDuJoueurDeBatailleNavale attaquantDeDépart = partie.Attaquant;
            int joueur1Attaquant = 0;
            int joueur2Attaquant = 0;

            for (int x = 0; x < 1000; x++)
            {
                partie.ChoisirLesRôlesDeDépartDesJoueurs();
                Assert.IsNotNull(partie.Attaquant, "L'attaquant ne peut pas être null");

                Assert.IsNotNull(partie.Défenseur, "Le défenseur ne peut pas être null");
                if (partie.Attaquant == joueur1)
                {
                    joueur1Attaquant++;
                    Assert.AreEqual(partie.Défenseur, joueur2, "Incohérence entre joueur ataquant et défenseur");
                }
                else if (partie.Attaquant == joueur2)
                {
                    joueur2Attaquant++;
                    Assert.AreEqual(partie.Défenseur, joueur1, "Incohérence entre joueur ataquant et défenseur");
                }
                else
                {
                    Assert.Fail("Incohérence entre joueur ataquant et défenseur");
                }
            }
            if (Math.Abs(joueur1Attaquant - joueur2Attaquant) > 100)
            {
                Assert.Fail("Un joueur semble favorisé au tirage au sort de départ");
            }
        }
예제 #5
0
        public void Phase1_4_PartieDeBatailleNavale_IntervertirLesRôlesDesJoueurs()
        {
            IContratDuJoueurDeBatailleNavale joueur1 = new joueurTest("joueur 1");
            IContratDuJoueurDeBatailleNavale joueur2 = new joueurTest("joueur 2");
            PartieDeBatailleNavale           partie  = new PartieDeBatailleNavale(joueur1,
                                                                                  joueur2);

            partie.ChoisirLesRôlesDeDépartDesJoueurs();
            IContratDuJoueurDeBatailleNavale attaquantActuel = partie.Attaquant;
            IContratDuJoueurDeBatailleNavale défenseurActuel = partie.Défenseur;

            for (int x = 0; x < 100; x++)
            {
                partie.IntervertirLesRôlesDesJoueurs();
                if (attaquantActuel == partie.Attaquant)
                {
                    Assert.Fail("L'attaquant n'a pas changé après l'appel à IntervertirLesRôlesDesJoueurs()");
                }
                Assert.AreEqual(défenseurActuel, partie.Attaquant, "Incohérence après l'interversion des rôles des joueurs");

                attaquantActuel = partie.Attaquant;
                défenseurActuel = partie.Défenseur;
            }
        }