Пример #1
0
        /// <summary>
        /// Method that start the main logic of the game.
        /// </summary>
        /// <param name="output">Output renderer</param>
        /// <param name="input">Iput provider</param>
        /// <param name="cmmandLogger">Command logger</param>
        public static void Start(IRenderer output, IInputProvider input, ILogger cmmandLogger)
        {
            output.ShowInfoMessage("Please ente your name: ");
            string playerName = input.GetPlayerName();

            output.ShowInfoMessage("Please enter a dimension for the board the standard is 9x9");
            int dimension = input.GetPlayFieldDimensions();

            ICell      playerCell = new Cell(new Position(dimension / 2, dimension / 2));
            IPlayField playField  = null;
            var        player     = new Player.Player(playerName, playerCell);

            try
            {
                var playFieldGenerator = new StandardPlayFieldGenerator(player.CurentCell.Position, dimension, dimension);
                playField = new PlayField.PlayField(playFieldGenerator, player.CurentCell.Position, dimension, dimension);
            }
            catch (ArgumentOutOfRangeException e)
            {
                output.ShowInfoMessage(e.Message);
            }

            ICommandFactory   commandFactory = new SimpleCommandFactory();
            IMementoCaretaker memory         = new MementoCaretaker(new List <IMemento>());
            IScoreLadder      ladder         = ScoreLadder.Instance;
            IGameEngine       gameEngine     = new StandardGameEngine(output, input, playField, commandFactory, cmmandLogger, player, memory, ladder);

            gameEngine.Initialize(RandomNumberGenerator.Instance);
            gameEngine.Start();
        }
Пример #2
0
        public void TestPlayFieldWithIncorrectData()
        {
            var       position  = new Position(55, 55);
            var       generator = new StandardPlayFieldGenerator(position, 3, 3);
            PlayField field     = new PlayField(generator, position, 4, 4);

            field.InitializePlayFieldCells(RandomNumberGenerator.Instance);
        }
Пример #3
0
        public void CheskPlayFieldCollsGetter()
        {
            var       position  = new Position(0, 2);
            var       generator = new StandardPlayFieldGenerator(position, 3, 3);
            int       row       = 4;
            int       col       = 5;
            PlayField field     = new PlayField(generator, position, row, col);

            Assert.AreEqual(col, field.NumberOfCols);
        }
        public void TestGeneratePlayField15X15ExitPathShouldExistFromTheCenter()
        {
            IPlayFieldGenerator generator = new StandardPlayFieldGenerator(new Position(7, 7), 15, 15);
            bool        pathFound         = true;
            ExitFounder pathFounder       = new ExitFounder(new Position(7, 7), 15, 15);

            for (var i = 0; i < 3000; i++)
            {
                ICell[,] k = generator.GeneratePlayField(RandomNumberGenerator.Instance);
                if (!pathFounder.CheckForExit(k))
                {
                    pathFound = false;
                }
            }

            Assert.IsTrue(pathFound);
        }