public void Build_InputShip_ReturnsShipRelativeCells(Ship ship, List <Cell> expectedResult) { var shipBuilder = new ShipBuilder(); var result = shipBuilder.Build(ship); Assert.That(result, Is.EqualTo(expectedResult)); }
public static bool TryBuild(this Enemy me) { ShipBuilder builder = me.GetComponent <ShipBuilder> (); if (!builder) { return(false); } builder.Build(); return(true); }
protected void Awake() { ShipBuilder builder = GetComponent <ShipBuilder> (); if (builder) { builder.Build(); } m_Animator = GetComponentInChildren <Animator> (); m_Health = GetComponent <Health> (); m_Sprite = GetComponentInChildren <SpriteRenderer> (); m_InitialColor = m_Sprite.color; }
public void Add(ShipBuilder shipBuilder) { var ship = shipBuilder.Build(); foreach (var s in ships.Where(x => x.Player == ship.Player).ToList()) { if (s.Collide(ship)) { throw new Exception(); } } ships.Add(ship); this.Subscribe(new BattleShipWoundedObserver(ship)); }
private void RegisterSunkenShip(ShipKind sunkenShipKind) { var shipBuilder = new ShipBuilder(sunkenShipKind).WithSquares(GridSquareStatus.Hit); var ship = shipBuilder.Build(); for (var index = 0; index < ship.Squares.Length - 1; index++) { IGridSquare shipSquare = ship.Squares[index]; _strategy.RegisterShotResult(shipSquare.Coordinate, ShotResult.CreateHit(ship, true)); } shipBuilder.WithHasSunk(true); _strategy.RegisterShotResult(ship.Squares[ship.Kind.Size - 1].Coordinate, ShotResult.CreateHit(ship, true)); }
private void RegisterSunkenShip(ShipKind sunkenShipKind, GridCoordinate[] coordinates) { // Get ship squares IGridSquare[] squares = coordinates.Select(c => { GridSquare square = new GridSquare(c); square.Status = GridSquareStatus.Hit; return(square); }).ToArray(); var shipBuilder = new ShipBuilder(sunkenShipKind).WithSquares(squares); var ship = shipBuilder.Build(); for (var index = 0; index < ship.Squares.Length - 1; index++) { IGridSquare shipSquare = ship.Squares[index]; _strategy.RegisterShotResult(shipSquare.Coordinate, ShotResult.CreateHit(ship, true)); } shipBuilder.WithHasSunk(true); _strategy.RegisterShotResult(ship.Squares[ship.Kind.Size - 1].Coordinate, ShotResult.CreateHit(ship, true)); }
private void DetectSunkenShipsVertically() { for (int j = 0; j < _grid.Size; j++) { for (int i = 0; i < _grid.Size; i++) { if (_grid.Squares[i, j].Status == GridSquareStatus.Hit) { int topIndex = i; while (i < _grid.Size && _grid.Squares[i, j].Status == GridSquareStatus.Hit) { i++; } int bottomIndex = i - 1; if (bottomIndex > topIndex) { var kind = ShipKind.All.First(kind => kind.Size == bottomIndex - topIndex + 1); var shipBuilder = new ShipBuilder(kind); var ship = shipBuilder.Build(); IList <IGridSquare> shipSquares = new List <IGridSquare>(); for (var index = topIndex; index < bottomIndex; index++) { shipSquares.Add(_grid.Squares[index, j]); _strategy.RegisterShotResult(_grid.Squares[index, j].Coordinate, ShotResult.CreateHit(ship, true)); } shipSquares.Add(_grid.Squares[bottomIndex, j]); shipBuilder.WithSquares(shipSquares.ToArray()); shipBuilder.WithHasSunk(true); _strategy.RegisterShotResult(_grid.Squares[bottomIndex, j].Coordinate, ShotResult.CreateHit(ship, true)); } } } } }
public void GivenShipRequestsReturnShips() { var builder = new ShipBuilder(); var ships = builder.Build(new[] { new ShipRequest { Type = "Battleship", Size = 5, Quantity = 1 }, new ShipRequest { Type = "Destroyer", Size = 4, Quantity = 2 }, }); ships.Where(x => x.Type == "Battleship").Should().HaveCount(1); ships.Where(x => x.Type == "Destroyer").Should().HaveCount(2); }
private void DetectSunkenShipsHorizontally() { for (int i = 0; i < _grid.Size; i++) { for (int j = 0; j < _grid.Size; j++) { if (_grid.Squares[i, j].Status == GridSquareStatus.Hit) { int leftIndex = j; while (j < _grid.Size && _grid.Squares[i, j].Status == GridSquareStatus.Hit) { j++; } int rightIndex = j - 1; if (rightIndex > leftIndex) { var kind = ShipKind.All.First(kind => kind.Size == rightIndex - leftIndex + 1); var shipBuilder = new ShipBuilder(kind); var ship = shipBuilder.Build(); IList <IGridSquare> shipSquares = new List <IGridSquare>(); for (var index = leftIndex; index < rightIndex; index++) { shipSquares.Add(_grid.Squares[i, index]); _strategy.RegisterShotResult(_grid.Squares[i, index].Coordinate, ShotResult.CreateHit(ship, true)); } shipSquares.Add(_grid.Squares[i, rightIndex]); shipBuilder.WithSquares(shipSquares.ToArray()); shipBuilder.WithHasSunk(true); _strategy.RegisterShotResult(_grid.Squares[i, rightIndex].Coordinate, ShotResult.CreateHit(ship, true)); } } } } }