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; }
/// <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; }
/// <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; }