Esempio n. 1
0
        private void HitShip(bool isAfterDraw)
        {
            int numbOfHitShip = Opponent.Board.GetField(_lastX, _lastY);

            if (Opponent.PlayerShips[numbOfHitShip].HitShip(_lastX, _lastY))
            {
                if (!isAfterDraw)
                {
                    _sameDirection = _wasHitAfterChoosingDir = _wasHitAfterDraw = false;
                    for (int i = 0; i < _chosenDir.Length; ++i)
                    {
                        _chosenDir[i] = false;
                    }
                }
                Opponent.SinkShip(numbOfHitShip);
                Opponent.MarkShipNeighborhood(true, numbOfHitShip);
                ++SunkenShips;
                _outputDevice.SetBottomMessage(2);
            }
            else if (!isAfterDraw)
            {
                _sameDirection = _wasHitAfterChoosingDir = true;
            }
            else
            {
                _wasHitAfterDraw = true;
            }
            Opponent.DrawShip(numbOfHitShip);
        }
Esempio n. 2
0
 private int MarkField(int selectedField, ref bool wasHit)
 {
     if (selectedField >= (int)Marker.FirstShip && selectedField <= (int)Marker.LastShip)
     {
         if (Opponent.PlayerShips[selectedField].HitShip(_x, _y))
         {
             ++SunkenShips;
             Opponent.SinkShip(selectedField);
             if (SunkenShips == 10)
             {
                 return(-1);
             }
             else
             {
                 Opponent.DrawShip(selectedField);
                 wasHit = true;
                 return(2);
             }
         }
         Opponent.DrawShip(selectedField);
         wasHit = true;
         return(1);
     }
     else
     {
         Opponent.Board.SetField(_x, _y, (int)Marker.AlreadyShot);
     }
     return(0);
 }