Ejemplo n.º 1
0
        /// <summary>
        /// Gioca una singola partita e restituisce il risultato
        /// </summary>
        /// <param name="ui"></param>
        /// <param name="turnNumber"></param>
        /// <param name="homeStrategy"></param>
        /// <param name="visitorStrategy"></param>
        /// <returns>Ritorna
        /// 0 = pareggio
        /// 1 = vince <see cref="homeStrategy"/>
        /// 2 = vince <see cref="visitorStrategy"/>
        /// </returns>
        private int DoSingleMatch(IUserInterface ui, int turnNumber, IStrategy homeStrategy, IStrategy visitorStrategy)
        {
            IStrategy s1, s2;
            bool      switched = turnNumber % 2 == 1;

            if (switched)
            {
                s1 = homeStrategy;
                s2 = visitorStrategy;
            }
            else
            {
                s2 = homeStrategy;
                s1 = visitorStrategy;
            }

            var g      = new BriscolaGame(new ItalianDeckFactory(), new PlayerFactory());
            var runner = new GameRunner(g, ui, _strategyFactory);

            runner.InitializeRoboMatch(s1.Name, s2.Name, 4);
            var result = runner.Play();

            if (switched)
            {
                return(GetOutcome(result.Item1, result.Item2));
            }
            else
            {
                return(GetOutcome(result.Item2, result.Item1));
            }
        }
Ejemplo n.º 2
0
        private static void RunRobotMatch(int matches = 100)
        {
            int matchId = 1;
            var ui      = Chat.GetUI();

            ui.Send("Inserisci il nome del primo robot");
            var strategyHome = ui.Get();

            ui.Send("Inserisci il nome del secondo robot");
            var strategyVisitor = ui.Get();

            List <Tuple <int, int> > scores = new List <Tuple <int, int> >();

            for (int i = 0; i < matches; i++)
            {
                var g      = new BriscolaGame(new ItalianDeckFactory(), new PlayerFactory());
                var runner = new GameRunner(g, ui, _strategyFactory);
                runner.InitializeRoboMatch(strategyHome, strategyVisitor, 4);
                var result = runner.Play();
                scores.Add(result);
            }

            foreach (var score in scores)
            {
                ui.Send("MATCH " + matchId + ": " + score.Item1 + " - " + score.Item2);
                matchId++;
            }

            var team1Score = scores.Count(x => x.Item1 > 60) * 2 + scores.Count(x => x.Item1 == 60);
            var team2Score = scores.Count(x => x.Item2 > 60) * 2 + scores.Count(x => x.Item2 == 60);

            ui.Send("Squadra 1: " + team1Score);
            ui.Send("Squadra 2: " + team2Score);
        }
Ejemplo n.º 3
0
        private static void Run4PlayerGame()
        {
            var g      = new BriscolaGame(new ItalianDeckFactory(), new PlayerFactory());
            var runner = new GameRunner(g, _ui, _strategyFactory);

            runner.InitializeHumanGame(4);
            runner.Play();
        }
Ejemplo n.º 4
0
        public GameTest()
        {
            _deckFactoryMock   = new Mock <IDeckFactory>();
            _playerFactoryMock = new Mock <IPlayerFactory>();
            _player1Mock       = new Mock <IPlayer>();
            _player2Mock       = new Mock <IPlayer>();
            _deckMock          = new Mock <IDeck>();
            _strategyMock      = new Mock <IStrategy>();

            _players = new[] { "Io", "Davide" };

            _sut = new BriscolaGame(_deckFactoryMock.Object, _playerFactoryMock.Object);
        }
Ejemplo n.º 5
0
        private static void RunRobotMatch(int matches)
        {
            int matchId = 1;
            var ui      = Chat.GetUI();

            var allStrategies = _strategyFactory.GetAllRobots().Select(s => s.Name).ToArray();

            ui.Send("Robot disponibili:");
            for (int i = 0; i < allStrategies.Length; i++)
            {
                ui.Send($" {i + 1} | {allStrategies[i]}");
            }
            ui.Send("");
            ui.Send(" 0 | Annulla");

            ui.Send("");
            var s1Choiche       = ui.GetInt("Scegli il primo robot", null);
            var s2Choiche       = ui.GetInt("Scegli il secondo robot", null);
            var strategyHome    = allStrategies[s1Choiche - 1];
            var strategyVisitor = allStrategies[s2Choiche - 1];

            var numPlayers = ui.GetInt("Scegli il numero di giocatori (default = 4)", 4);


            var scores = new List <Tuple <int, int> >();

            for (int i = 0; i < matches; i++)
            {
                var g      = new BriscolaGame(new ItalianDeckFactory(), new PlayerFactory());
                var runner = new GameRunner(g, ui, _strategyFactory);
                runner.InitializeRoboMatch(strategyHome, strategyVisitor, numPlayers);
                var result = runner.Play();
                scores.Add(result);
            }

            foreach (var score in scores)
            {
                ui.Send("MATCH " + matchId + ": " + score.Item1 + " - " + score.Item2);
                matchId++;
            }

            var team1Score = scores.Count(x => x.Item1 > 60) * 2 + scores.Count(x => x.Item1 == 60);
            var team2Score = scores.Count(x => x.Item2 > 60) * 2 + scores.Count(x => x.Item2 == 60);

            ui.Send("Squadra 1: " + team1Score);
            ui.Send("Squadra 2: " + team2Score);
        }
Ejemplo n.º 6
0
        public void Start_cannot_be_called_when_players_are_1_or_more_than_4()
        {
            var briscola = new Card("Bastoni", 3);

            _deckFactoryMock.Setup(x => x.CreateDeck()).Returns(_deckMock.Object);
            _deckMock.Setup(d => d.PeekLast()).Returns(briscola);
            _deckMock.Setup(d => d.Pop()).Returns(new Card("foo", 1));
            var strategyMock = new Mock <IStrategy>();

            strategyMock.Setup(m => m.Choose(It.IsAny <IPlayer>(), It.IsAny <GameState>())).Returns(new Card());
            _playerFactoryMock.Setup(f => f.CreatePlayer(It.IsAny <string>(), It.IsAny <IStrategy>()))
            .Returns(_player1Mock.Object);

            var g = new BriscolaGame(_deckFactoryMock.Object, _playerFactoryMock.Object);

            g.Join("Giocatore1", strategyMock.Object);

            Executing.This(() =>
                           g.Start()).Should().Throw <InvalidOperationException>();
        }