In this game, the computer chooses a point between (1, 1) and (20, 20) inclusive. The user is repeatedly asked to guess the point. For each incorrect guess, the program will give the user one of the following three hints: - hot (a distance ≤ 1.5 from the correct answer) - warm (a distance ≤ 5.0 from the correct answer) - cold (a distance > 5.0 away from the right answer) The game also hints about which direction the user should go from the current guess to find the right answer: - north (the user should increase y) - south (the user should decrease y) - east (the user should increase x) - west (the user should decrease x) When the game ends, the program reports how many guesses were needed. After each game, the program asks the user to play again. You may assume that the user will give a one-word answer. The program should continue playing if the user's response begins with a lower- or upper-case Y. That is, answers such as "y", "Y", "YES", "yes", "Yes", or "yeehaw" would all indicate that the user wants to play again. Otherwise, assume that the user does not want to play again. For example, responses such as "n", "N", "no", "okay", "0", and "hello" would end the game. Once the user ends a game and chooses not to play again, the program prints overall statistics about the games played. The total number of games, total guesses for all games, and average number of guesses per game (as a real number rounded to two decimal places) are displayed. The log of execution on this page demonstrates your program's behavior. Your program may generate different random points, but your output structure should match this one exactly. Your program should present correct information regardless of how many guess(es) were needed or game(s) were played. The hints about guesses being hot, warm, or cold are based on distances between points. The formula to compute the distance between two points is to take the square root of the squares of the differences in x and y between the two points. For example, if the correct point is (11, 4) and the user guesses (5, 7), their distance is roughly 6.71, so the hint is "cold". If the user then guesses (12, 3), the distance between (11, 4) and (12, 3) is roughly 1.41, so the hint is "hot". In order to find the distance between two points use this formula from wikipedia! http://en.wikipedia.org/wiki/Distance_formula#Geometry Basically, if you have a point (x1,y1) and (x2,y2) you will be solving for the square root of the quantity (x2-x1)^2 + (y2-y1)^2. You should represent the correct answer and user's guesses as tuples. If the user guesses the number correctly in one try, you can still print the text "You got it right in 1 guesses" although the word "guess" would be more appropriate. We will not test this case when grading, so either output is fine. Assume valid user input. When the user is prompted for numbers, the user will type valid integers in the proper range. When the user is prompted to play again, the user will type a one-word string as their answer. To deal with the yes/no response from the user, you may want to use some of the String class methods described in Chapters 3 and 4 of the book. To round numbers to 2 decimal places, use the round2 method shown in previous homework assignments. Structure your solution using functions that accept parameters and return values where appropriate. For full credit, you must have at least 2 methods other than main in your program: a method to play a single game with the user (not multiple games), and a method to report the overall statistics to the user. You may define other methods if they are useful to eliminate redundancy. If you like, you can place the loop to play multiple games and prompt the user to play another game in your main method. As a reference, our solution includes 5 methods other than main and round2 and occupies 99 lines including comments and blank lines. For full credit, you must define a class constant for the maximum x/y value used in the guessing game. The sample log shows the user making guesses from 1 to 20, but by introducing a constant for 20, you should be able to make the program play the game over any other range starting with (1, 1) just by changing the constant's value. For example, if it is changed to 5, your program picks (x, y) points between (1, 1) and (5, 5). See the course web site for example output.