In this project you will write the back-end of a system to support turn-based AI tournaments. You are provided with the complete documentation for the system, and the implementation of several classes:
You will have to write the following:
makeMove should determine if the move was made within the window of opportunity, and immediately return, so the Player object regains control of the thread quickly.moveAvailable should also return right away. Use an interrupt() call to wake up a Thread who's sole responsibility is to call moveAvailable on the Player object. That thread should just be looping in the run method of GameProxy, alternately waiting to be interrupted and calling moveAvailable on the Player. If the player causes an exception on that thread, you can just let that thread crash; the game should continue on regardless.null for the move). Once the player object returns from moveAvailable, the most recent move is made available by GameProxy calling moveAvailable on the Player object again. For example, if a player took too long thinking and missed a few turns, only the most recent turn is made available with a call to the player's moveAvailable method.Due November 12, at the start of class.