public Tuple <char, int> SelectSquare() { if (CurrentRedSquare is not null) { var ship = ShipFactory.GetInstance(CurrentRedSquare.ShipType); return(ship.FindNextSquer(OpponentOcean, CurrentRedSquare.Position)); } else { List <Tuple <char, int> > blankSquares; if (OpponentOcean.Any(r => r.Status is PositionStatus.Red && !r.IsSinked)) { blankSquares = OpponentOcean.Where(r => r.Status is PositionStatus.Red && !r.IsSinked).Select(r => r.Position).ToList(); } else { blankSquares = OpponentOcean.Where(r => r.Status == PositionStatus.Empty).Select(r => r.Position).ToList(); } Random random = new Random(); var index = random.Next(1, blankSquares.Count); return(blankSquares[index]); } }
private void Sinked(IBaseShip ship) { opponentDestroyed++; var sinkedPoint = ship.CurrentPosibilities.Single(); OpponentOcean.Where(r => sinkedPoint.Any(sp => r.Position.Equals(sp.Position))).Select(r => r.IsSinked = true).ToList(); CurrentRedSquare = null; ship.Sinked(); }
public void FillSquare(Tuple <char, int> position, PositionStatus positionStatus, ShipType?shipType) { var Square = OpponentOcean.Single(r => r.Position.Equals(position)); Square.Status = positionStatus; Square.ShipType = shipType; if (positionStatus is PositionStatus.Red && CurrentRedSquare is null) { CurrentRedSquare = Square; } }