public void GivenPrimeNumberRuleApplied_WhenPlayerLandsOnPrimeNumber_ThenPlayerSkipsATurn()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player1     = new Player("p1")
            {
                Place = 10
            };
            var player2 = new Player("p2")
            {
                Place = 11
            };

            gameBuilder.AddPlayer(player1);
            gameBuilder.AddPlayer(player2);
            var dice = new Mock <IDice>();

            dice.Setup(d => d.Throw()).Returns(3);
            gameBuilder.SetDice(dice.Object);
            gameBuilder.SetStrategy(new SkipOnPrimeNumberStrategy(new List <Player> {
                player1, player2
            }));
            var game = gameBuilder.Build();

            //when
            game.CurrentPlayer.Id.Should().Be(player1.Id, "First player at game start");
            game.Play();
            game.CurrentPlayer.Id.Should().Be(player2.Id, "Player2 after player1");
            game.Play();
            game.CurrentPlayer.Id.Should().Be(player2.Id, "Player1 is on skip");
            game.Play();
            game.CurrentPlayer.Id.Should().Be(player1.Id, "player1 after player2");
            //then
        }
Пример #2
0
        static void Main(string[] args)
        {
            bool save = false;

            GameBuilder builder = new GameBuilder();

            if (save)
            {
                builder.AddPlayer("Roger", "INFO");
                builder.AddPlayer("Bernard", "EII");
                builder.SetSize("Small");
                builder.UseDefaultFrequencies();
                Game game = builder.Build();
                game.Save("save01.dat");
            }
            else
            {
                Game game = builder.LoadGame("save01.dat");
                //Console.Write(game.Map);
                Console.WriteLine(game.CurrentPlayer);
                Console.WriteLine(game.CurrentPlayer.Cities[0]);
                game.NextTurn();
                Console.WriteLine(game.CurrentPlayer);
                Console.WriteLine(game.CurrentPlayer.Cities[0]);
                game.Save("save01.dat");
            }
        }
Пример #3
0
 private IRunningGame StartTestGame(params string[] names)
 {
     foreach (var name in names)
     {
         gameBuilder.AddPlayer(name);
     }
     return(gameBuilder.Start());
 }
 /// <summary>
 /// Adds a player to the game builder if the control is visible, that is, if
 /// there is enough players to make use of this control.
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="player"></param>
 /// <param name="name"></param>
 /// <param name="civilization"></param>
 private void AddPlayerToGameBuilder(GameBuilder builder, StackPanel player, TextBox name, ComboBox civilization)
 {
     if (player.Visibility == Visibility.Visible)
     {
         builder.AddPlayer(name.Text, civilization.Text);
     }
 }
        public void GivenGameHasSnakeAtFourteen_WhenUserReachesFourteen_ThenUserShouldMoveToSeven()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player      = new Player
            {
                Place = 10
            };

            gameBuilder.AddPlayer(player);
            var snake = new Snake(14, 7);

            gameBuilder.AddJumper(snake);
            var dice = new Mock <IDice>();

            dice.Setup(d => d.Throw()).Returns(4);
            gameBuilder.SetDice(dice.Object);
            var game = gameBuilder.Build();

            //when
            var diceThrow = game.Play();

            //then
            game.Players.ToList()[0].Place.Should().Be(7);
        }
        public void GivenPlayerHitsGreensSnakes_WhenPlayerAgainHitsSameSnake_ThenSnakeIsPowerless()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player      = new Player
            {
                Place = 10
            };

            gameBuilder.AddPlayer(player);
            var snake = new GreenSnake(14, 10);

            gameBuilder.AddJumper(snake);
            var dice = new Mock <IDice>();

            dice.Setup(d => d.Throw()).Returns(4);
            gameBuilder.SetDice(dice.Object);
            var game      = gameBuilder.Build();
            var diceThrow = game.Play();

            //when
            diceThrow = game.Play();

            //then
            player.Place.Should().Be(14);
        }
Пример #7
0
        public void TestGameSave()
        {
            gameBuilder = new GameBuilderUnsaved();

            Player[] tabPlayer = new Player[2];
            tabPlayer[0] = new Player("Joueur1", "cyclops");
            tabPlayer[1] = new Player("Joueur2", "centaur");

            gameBuilder.AddStrategy("demo");
            gameBuilder.AddPlayer(tabPlayer);
            Game game = gameBuilder.Build();


            Assert.AreEqual(game.NbJoueur, 2);
            Assert.AreEqual(game.ListPlayer.Count, 2);
            Assert.AreEqual(game.ListPlayer[0].Name, "Joueur1");
            Assert.AreEqual(game.ListPlayer[0].RaceString, "cyclops");
            Assert.AreEqual(game.ListPlayer[0].EntityList.Count, 4);
            Assert.AreEqual(game.ListPlayer[1].Name, "Joueur2");
            Assert.AreEqual(game.ListPlayer[1].RaceString, "centaur");
            Assert.AreEqual(game.ListPlayer[1].EntityList.Count, 4);

            if (game.CurrEntity.Pos == 0)
            {
                game.Move(1);
            }
            else if (game.CurrEntity.Pos == 35)
            {
                game.Move(34);
            }
            else if (game.CurrEntity.Pos == 5)
            {
                game.Move(4);
            }
            else if (game.CurrEntity.Pos == 29)
            {
                game.Move(30);
            }

            //On enregistre une sauvegarde du game dans un fichier SaveFile
            game.Save("SaveFile.txt", -1);

            Assert.IsTrue(game.VerifEndGame() == -1);

            //On charge la sauvegarde
            gameBuilder = new GameBuilderSaved("C:\\Users\\agimenez\\Documents\\SaveFile.txt");

            Game gameLoad = gameBuilder.Build();

            Assert.AreEqual(gameLoad.NbJoueur, 2);
            Assert.AreEqual(gameLoad.ListPlayer.Count, 2);
            Assert.AreEqual(gameLoad.ListPlayer[0].Name, "Joueur1");
            Assert.AreEqual(gameLoad.ListPlayer[0].RaceString, "cyclops");

            //Assert.AreEqual(game.ListPlayer[0].EntityList.Count, 4);
            Assert.AreEqual(gameLoad.ListPlayer[1].Name, "Joueur2");
            Assert.AreEqual(gameLoad.ListPlayer[1].RaceString, "centaur");
            Assert.AreEqual(gameLoad.ListPlayer[1].EntityList.Count, 4);
        }
        public void GivenBoardWithOneUser_WhenNewGameCreated_ThenUserPlaceShouldBeOne()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player      = gameBuilder.AddPlayer(new Player());
            //when
            var game = gameBuilder.Build();

            //then
            player.Place.Should().Be(1);
        }
        public void GivenNewBoardWithOneUser_WhenGamePlayed_ThenUserIsAdvanced()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player      = gameBuilder.AddPlayer(new Player());
            var game        = gameBuilder.Build();
            //when
            var diceThrow = game.Play();

            //then
            game.Players.ToList()[0].Place.Should().Be(diceThrow + 1);
        }
Пример #10
0
        public void TestAttackDefense()
        {
            gameBuilder = new GameBuilderUnsaved();;

            Player[] tabPlayer = new Player[2];
            tabPlayer[0] = new Player("Joueur1", "cyclops");
            tabPlayer[1] = new Player("Joueur2", "centaur");

            gameBuilder.AddStrategy("demo");
            gameBuilder.AddPlayer(tabPlayer);
            Game game = gameBuilder.Build();

            game.StartTurn();
            game.CurrEntity.Pos = 2;

            //les movePoints ne sont sencés changer après un Skip() car ils sont au max
            double Oldpoint = game.CurrEntity.MovePoint;

            Assert.IsTrue(game.Skip());
            Assert.AreEqual(Oldpoint, game.CurrEntity.MovePoint);

            //On passe la main a l'enemy
            game.EndMyTurn();
            game.CurrEntity.Pos = 3;
            game.EndMyTurn();

            //c'est la seul entity dans la position 3 donc c'est la meilluer defense
            Assert.AreEqual(game.CurrEntity, game.Map.GetBestDefenser(2));

            game.Map.GetDistance(game.CurrEntity, 3);

            //Le move va decalancher un combat vu que il ya l'enemy est dans la case suivante
            //l'entité courante gagne et cela retourne true
            Assert.IsTrue(game.Move(3));
            Assert.AreEqual(game.GetActionNumber(), 1);

            //On met tout ses LifePoint à 0 pour que l'autre joueur gagne
            // FAUX ! On sort l'unité du plateau en lui mettant pour position -1
            foreach (Entity e in game.ListPlayer[0].EntityList)
            {
                //e.LifePoint = 0;
                game.Map.Remove(e.Pos, e);
            }
            //On passe la main à l'autre joueur
            game.EndMyTurn();
            Assert.AreEqual(game.VerifEndGame(), game.CurrPlayerNumber);
        }
Пример #11
0
        public void GivenPlayerIsAt70_WhenGameRolls4_ThenPlaceIs74()
        {
            //given
            var gameBuilder = new GameBuilder();
            var player      = new Player()
            {
                Place = 70
            };

            gameBuilder.AddPlayer(player);
            var dice = new Mock <IDice>();

            dice.Setup(d => d.Throw()).Returns(4);
            gameBuilder.SetDice(dice.Object);
            var game = gameBuilder.Build();

            //when
            game.Play();

            //then
            game.Players.ToList()[0].Place.Should().Be(74);
        }
Пример #12
0
        public void TestMovePointTurn()
        {
            //construire le gameBuilder
            gameBuilder = new GameBuilderUnsaved();
            //declarer un tableau de Player
            Player[] tabPlayer = new Player[2];
            tabPlayer[0] = new Player("Joueur1", "cyclops");
            tabPlayer[1] = new Player("Joueur2", "centaur");
            //Ajouter la strategie au gameBuilder
            gameBuilder.AddStrategy("demo");
            //Ajouter les joueurs au gameBuilder
            gameBuilder.AddPlayer(tabPlayer);
            //declarer et construire le game
            Game game = gameBuilder.Build();

            //Debut des tours
            game.StartTurn();
            //recuperer les points de mouvement de l'netité courante du premier player
            double pt1 = game.CurrEntity.MovePoint;

            //faire un movement a la case 2
            //Et si il commence pas en 0 ?
            //game.Move(2);
            if (game.CurrEntity.Pos == 0)
            {
                game.Move(2);
            }
            if (game.CurrEntity.Pos == 35)
            {
                game.Move(33);
            }
            if (game.CurrEntity.Pos == 5)
            {
                game.Move(3);
            }
            if (game.CurrEntity.Pos == 30)
            {
                game.Move(32);
            }
            //recuperer les points de mouvement apres le move
            double pt2 = game.CurrEntity.MovePoint;

            //les points de mouvements doivent baisser
            Assert.IsTrue(pt1 > pt2);
            //passer la main à l'autre joueur
            game.NextPlayer();
            game.StartTurn();
            //recuperer la position de l'entité courante
            int pos1 = game.CurrEntity.Pos;

            //deplacer l'entité courante
            game.CurrEntity.Move(10, game.Map);
            //recuperer la nouvelle position
            int pos2 = game.CurrEntity.Pos;

            //tester si la position a changé
            Assert.IsTrue(pos1 != pos2);
            //faire un move qui teste si on peut
            game.Move(10);
            //recuperer la nouvelle position
            int pos3 = game.CurrEntity.Pos;

            //tester si la position n'a pas changé car on a que 3 points de mouvement
            Assert.IsTrue(pos3 == pos2);
        }