private static void GetInputsAndShoot() { var angle = GetAngle(); var speed = GetSpeed(); var attempt = new CannonShotAttempt(angle, speed); var result = CannonInstance.Shoot(attempt); if (result.Hit) { Console.Write($"Hit - {CannonInstance.PreviousShotResults.Count} shot(s)"); Console.Write("Would you like to play again? (Y/N)"); var answerKey = Console.ReadKey(); var answer = answerKey.Key == ConsoleKey.Y; if (answer) { CannonInstance.Reset(); Play(); } } else { Console.WriteLine($"Missed shot landed at {result.ShotDistance}m"); GetInputsAndShoot(); } }
static void Main(string[] args) { Console.WriteLine("Welcome to CannonAttack"); bool isStillPlaying = true; while (isStillPlaying) { bool isAHit = false; Cannon cannon = Cannon.GetInstance(); while (!isAHit && cannon.Shots < MaxNumberOfShots) { int angle; int velocity; Console.WriteLine(String.Format("Target is at {0} meters", cannon.DistanceOfTarget)); GetInputVariable(out angle, out velocity); var shot = cannon.shoot(angle, velocity); isAHit = shot.Item1; int distanceOfShotFromTarget = cannon.DistanceFromTarget(cannon.CalculateDistanceOfCannonShot(angle, velocity), cannon.DistanceOfTarget); Console.WriteLine(shot.Item2); Console.WriteLine("Shot Landed {0} distance away from target!", distanceOfShotFromTarget); } isStillPlaying = GetIsPlayingAgain(); cannon.Reset(); } Console.WriteLine("Thanks for playing Cannon Attack"); }