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)); Console.WriteLine(String.Format("Person is at {0} meters", cannon.DistanceOfPerson)); GetInputVariable(out angle, out velocity); var shot = cannon.Shoot(angle, velocity); isAHit = shot.Item1; Console.WriteLine(shot.Item2); } isStillPlaying = GetIsPlayingAgain(); cannon.Reset(); } Console.WriteLine("Thanks for playing Cannon Attack"); }