public void TestPositionConstructurIfSetAndReturnYValidValue()
 {
     var position = new Position(5, 6);
     var actual = position.Y;
     var expected = 6;
     Assert.AreEqual(expected, actual);
 }
        public void TestCloneMethodIfReturnNewInstanceOfPosition()
        {
            var position = new Position();
            var clonetPosition = position.Clone();

            Assert.AreNotSame(clonetPosition, position);
        }
 public void TestSetCellMethodIfSetCurrectlyValueWithPositionValue()
 {
     var position = new Position(3, 3);
     var grid = new Grid();
     grid.SetCell(position.X, position.Y, 'X');
     var expect = 'X';
     var actual = grid.Field[3, 3];
     Assert.AreEqual(expect, actual);
 }
        public void TestSecondConstruncturIfReturnValidNameAndPositionValue()
        {
            var position = new Position(3, 4);
            var player = new Player("Gosho", position);

            var actualName = player.Name;
            var actualPositionX = player.Position.X;
            var actualPositionY = player.Position.Y;

            var expectedName = "Gosho";
            var expectedPositionX = 3;
            var expectedPositionY = 4;

            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedPositionX, actualPositionX);
            Assert.AreEqual(actualPositionY, expectedPositionY);
        }
        /// <summary>
        /// Маке аt least one possible way out of the maze
        /// </summary>
        /// <param name="generatedGrid">Genereted game field</param>
        /// <param name="player">Player member</param>
        public void MakeAtLeastOneExitReachable(IGrid generatedGrid, IPlayer player)
        {
            DefaultRandomGenerator random = DefaultRandomGenerator.Instance();
            int[] dirX = { 0, 0, 1, -1 };
            int[] dirY = { 1, -1, 0, 0 };
            int numberOfDirections = 4;

            while (this.IsGameOver(player, generatedGrid) == false)
            {
                int randomIndex = random.Next(0, numberOfDirections);

                var nextPosition = new Position(player.Position.X + dirX[randomIndex], player.Position.Y + dirY[randomIndex]);

                if (this.IsInsideGrid(nextPosition, generatedGrid))
                {
                    player.Position = nextPosition;
                    generatedGrid.SetCell(player.Position.X, player.Position.Y, GlobalConstants.FreeCellSymbol);
                }
            }

            player.Position = new Position(generatedGrid.TotalRows / 2, generatedGrid.TotalCols / 2);
            generatedGrid.SetCell(generatedGrid.TotalRows / 2, generatedGrid.TotalCols / 2, GlobalConstants.PlayerSignSymbol);
        }
        /// <summary>
        /// Checks if the player is in game field
        /// </summary>
        /// <param name="position">Player position</param>
        /// <param name="grid">Game field</param>
        /// <returns></returns>
        private bool IsInsideGrid(Position position, IGrid grid)
        {
            if (position.X >= 0 && position.X < grid.TotalRows &&
                    position.Y >= 0 && position.Y < grid.TotalCols)
            {
                return true;
            }

            return false;
        }
Example #7
0
 /// <summary>
 /// Set value from certain cell to playfield
 /// </summary>
 /// <param name="position">The position of current cell</param>
 /// <param name="value">The value of the char to set</param>
 public void SetCell(Position position, char value)
 {
     this.Field[position.X, position.Y] = value;
 }
Example #8
0
 /// <summary>
 /// Get value from certain cell from playfield
 /// </summary>
 /// <param name="position">The position of current cell</param>
 /// <returns></returns>
 public char GetCell(Position position)
 {
     return this.Field[position.X, position.Y];
 }
        /// <summary>
        /// Test the player movement is valid
        /// </summary>
        /// <param name="position">Player position</param>
        /// <param name="grid">Game field</param>
        /// <returns></returns>
        private bool IsMoveValid(Position position, IGrid grid)
        {
            if (position.X < 0 || position.X > grid.TotalRows - 1 ||
                position.Y < 0 || position.Y > grid.TotalCols - 1)
            {
                return false;
            }

            return true;
        }
 /// <summary>
 /// Setting player name and position
 /// </summary>
 /// <param name="name">The value to be set</param>
 /// <param name="position">The value to be set</param>
 public Player(string name, Position position)
     : this(name)
 {
     this.Position = position;
 }