public void AllCellsVisitedByPacManAreNotFilledWithDots() { var grid = new Grid(4, 8); var originPosition = new Position(0, 0); var positionNextToActual = new Position(1, 0); grid.PlacePacManAt(originPosition); grid.MovePacManTo(positionNextToActual); Assert.NotEqual(Grid.FilledCell, grid.At(originPosition)); }
public bool Equals(Position other) { return X == other.X && Y == other.Y; }
public static Position GetUp(Position position) { return new Position(position.X, position.Y - 1); }
public static Position GetRight(Position position) { return new Position(position.X + 1, position.Y); }
public static Position GetLeft(Position position) { return new Position(position.X - 1, position.Y); }
private bool IsValidMove(Position position) { if (!_isPacManAtGrid) return false; if (_wallsPositions.Contains(position)) return false; return position.X >= 0 && position.X < _width && position.Y >= 0 && position.Y < _height; }
public void PlaceWall(Position wallPosition) { _wallsPositions.Add(wallPosition); }
public void PacManCantMoveIfItDoesNotExist() { var grid = new Grid(4, 8); var somePosition = new Position(2, 1); Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(somePosition)); }
public void MovePacManTo(Position position) { if (!IsValidMove(position)) { throw new InvalidMoveException(); } _pacManPosition = position; _visitedCells.Add(position); }
public string At(Position position) { if (position.Equals(_pacManPosition)) return PacMan; if (_visitedCells.Contains(position)) return EmptyCell; return FilledCell; }
public static Position GetDown(Position position) { return new Position(position.X, position.Y + 1); }
private static void AssertFilledWithDots(Grid grid, int width, int height) { for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { var position = new Position(x, y); Assert.Equal(Grid.FilledCell, grid.At(position)); } } }
public void WithPacmansHeadYouDontBreakThrough() { var grid = new Grid(4, 8); var originPosition = new Position(0, 0); var positionNextToActual = new Position(-1, 0); grid.PlacePacManAt(originPosition); Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual)); }
public void PacmanMovesAfterTick(Game.Direction direction, int nextX, int nextY) { var grid = new Grid(4, 8); var originPosition = new Position(0, 0); var positionNextToActual = new Position(nextX, nextY); grid.PlacePacManAt(originPosition); var game = new Game(grid); game.PacmanDirection = direction; game.Tick(); Assert.Equal(Grid.PacMan, grid.At(positionNextToActual)); }
public void PacManCantMoveToWall() { var grid = new Grid(4, 8); var positionWall = new Position(2, 0); grid.PlaceWall(positionWall); var originPosition = new Position(0, 0); var positionNextToActual = new Position(2, 0); grid.PlacePacManAt(originPosition); Assert.Throws<InvalidMoveException>(() => grid.MovePacManTo(positionNextToActual)); }
public void PlacePacManAt(Position position) { _isPacManAtGrid = true; MovePacManTo(position); }
public void CellNearPacmanIsFilledWithDot() { var grid = new Grid(4, 8); var originPosition = new Position(0, 0); var positionNextToActual = new Position(1, 0); grid.PlacePacManAt(originPosition); Assert.Equal(Grid.FilledCell, grid.At(positionNextToActual)); }
public void CellWithPacmanIsNotFilledWithDot() { var grid = new Grid(4, 8); var originPosition = new Position(0, 0); grid.PlacePacManAt(originPosition); Assert.NotEqual(Grid.FilledCell, grid.At(originPosition)); }