/// <summary> /// Fires a shot /// </summary> /// <param name="victim"></param> /// <param name="Shoter"></param> /// <param name="ShotPoint"></param> /// <returns></returns> private FireShotResponse Shot(Player victim, Player Shoter, out Coordinate ShotPoint) { FireShotResponse fire; Coordinate WhereToShot; try { do { WhereToShot = ControlInput.GetShotLocationFromUser(); fire = victim.PlayerBoard.FireShot(WhereToShot); if (fire.ShotStatus == ShotStatus.Invalid || fire.ShotStatus == ShotStatus.Duplicate) { ControlOutput.ShowShotResult(fire, WhereToShot, ""); } if (fire.ShotStatus == ShotStatus.Victory) { if (players.IsPlayer1) { players.Player1.Win += 1; } else { players.Player2.Win += 1; } } } while (fire.ShotStatus == ShotStatus.Duplicate || fire.ShotStatus == ShotStatus.Invalid); ShotPoint = WhereToShot; } catch (Exception) { throw; } return(fire); }