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); }
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); }