Exemplo n.º 1
0
        public void AddSubmarine(Coordinate initialCoordinate, Coordinate finalCoordinate, int length)
        {
            Submarines.Add(new Submarine(length, Submarines.Count));
            SelfBoard.LocateSubmarine(initialCoordinate, finalCoordinate, length, Submarines[Submarines.Count - 1].Id);

            Submarines[Submarines.Count - 1].DestructionEvent += DestroyFrameOfSubmarine; //register the event
        }
Exemplo n.º 2
0
        public void MakeMove(Coordinate chosenSquare)
        {
            SelfBoard.SelectSquare(chosenSquare);
            Square chosen = SelfBoard.GetSquareByIndex(chosenSquare);

            if (chosen.Status == SquareStatus.HITTED_BOAT)
            {
                Submarines[chosen.Id].HitBoat();
            }

            if (Submarines.All(s => s.IsDestroyed))
            {
                HasLostEvent?.Invoke();
            }
        }
Exemplo n.º 3
0
 private void DestroyFrameOfSubmarine(int submarineId)
 {
     SelfBoard.GetCoordinateOfSquaresById(submarineId)
     .ForEach(c => SelfBoard.GetValidFrameOfSquareByIndex(c).ForEach(s => s.HitSquare()));
 }
Exemplo n.º 4
0
 public bool IsMoveValid(Coordinate chosenSquare)
 {
     return(SelfBoard.CanSquareBeSelected(chosenSquare));
 }