Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Use java, don't get old solutions from Chegg pls, thanks in advance. implement main class the solution Write a Java program that implements the system
Use java, don't get old solutions from Chegg pls, thanks in advance. implement main class the solution
Write a Java program that implements the system shown in the following UML class diagram, which represents a gaming platform: \begin{tabular}{|l|} \hline \multicolumn{1}{|c|}{ Platform } \\ \hline - player: java.util.ArrayList \\ \hline + Platform() \\ + addPlayer(player: Player): void \\ + bestPlayerName(): String \end{tabular} \begin{tabular}{l} Player \\ \hline - name: String \\ \hline + Plames: java.util.ArrayList \\ + getName(): String \\ + addGame(game: Game): void \\ + play(): void \\ + getPoints(): long \\ + getNumberOfPlayedGames(): int \\ \hline \end{tabular} \begin{tabular}{|l|} \hline \multicolumn{1}{|c|}{ Game } \\ \hline \# points: long \\ \# status: boolean \\ - description: String \\ \hline + Game(description: String) \\ + isPlayed(): boolean \\ + getPoints(): long \\ + play(): void \end{tabular} \begin{tabular}{|l} \hline - word: String \\ - hint: String \\ - numOfTrials: int \\ - MAX TRIALS: int =5 \\ \hline \end{tabular} HangMan + HangMan(description: String, word: String, hint: String) + play(): void Game class instructions: - Game class has three attributes: points (which represent the number of points awarded when winning the game), status (false if the game has not been played and true if the game has been played), and description (which is a text description of the game). Note that description attribute is a read-only variable. - In the constructor, initialize points to zero, status to false, and description to the given parameter. - isPlayed method returns true if the game has been played, and false otherwise. - getPoints is a getter method for points attribute. - play method is an abstract method. - Override toString method to return the game description. - Override equals method so that two games are the same if their descriptions are the same. HangMan ( ) class instructions: - HangMan is a game in which a player tries to guess a word based on a given hint. For example, if the given hint is "movie", then the player must guess a movie name. If the given hint is a "country", then the player must guess a country name, and so on. - The game starts by showing a message on the screen that shows the hint and all letters in the word but obscured as dashes (-). Then, the game will allow the player to guess 5 letters. If the player gives a letter that actually exists in the word, then this letter will be revealed. Afterwards, the game will ask the player to give the answer. If the given answer is correct, then the game will show a message that the player has won 5 points. Otherwise, the game will show a message that the player has lost. Below is one possible game scenario, in which the word is "iron man", and the hint is "movie". Note that the text in green color is the input given by the player. - Here is another game scenario where the player has lost. - Note that if the player knows the answer before the 5 trials are used, then the player can insert hashtag \# to terminate the trials and give the answer directly. If the given answer is indeed correct, then the player will be awarded more points. See the below scenario. \begin{tabular}{l} \hline Hint: movie \\ You have 5 trials left \\ Enter your letter \\ n \\ \hline You have 4 trials left \\ Enter your letter \\ i \\ inn \\ You have 3 trials left \\ Enter your letter \\ # \\ ======================== \\ Enter your guess \\ iron man \\ You won with 20 points \\ \hline \end{tabular} - HangMan class has four attributes: word (which the word that a player needs to guess), hint (which is the given hint to the player), numOfTrials (which is the number of trials), and MAX_TRIALS (a constant field that is set to 5). Note that word and hint attributes are read-only variables. - In the constructor, initialize each attribute to its proper parameter. Note that numOfTrials attribute is initially set to 0 . - Implement the play method as explained before while doing exception handling. More specifically, during guessing letters, if the player inputs more than one character, then your Java program should terminate and throw a RuntimeException. To calculate the awarded points for winners, use the formula: points =305 num OfTrials Note that the maximum number of trials is equal to MAX_TRIALS. Also, note that play method must set the game status to true to indicate that the game has been played. Player class instructions: - Player class has two attributes: name (which is the name of the player), and games (which is an array list that contains games that the player wants to play). - In the constructor, initialize name to the given parameter, and games to an empty list. - getName method is a getter method for name attribute. - addGame method adds a game to the games list. - play method will run all unplayed games, while skipping games that have been played before. - getPoints method returns the total number of points awarded to the player from played games. - getNumberOfPlayedGames method returns the total number of played games. Note that unplayed games should not be counted. Platform class instructions: - Platform class has one attribute: an array list of players. - In the constructor, initialize players list to empty list. - addPlayer method adds a player to the players list. - bestPlayerName method returns the name of the player with the highest points. In case there was no players, then return "None". Also, if all players have zero points, then also return "None". If you happen to have more than one player with the same best number of points, then it is okay to return the name of any of the best players. General Notes: - You must follow the aggregation and inheritance relationships shown in the UML diagram. - Do not add new attributes beyond the ones we specified in each class. - Do not add any public methods beyond the ones we specified in each class. However, creating private methods is okay. - Create a test class with a main method and use to test it your classes however you deem fit. Name your test class Main.java. Note that we intentionally did not say anything about the main method as we want to leave it to you to determine how to test your code. 4 - To collect your solution, we will create a submission assignment on Microsoft Teams. When you are ready, submit the following four classes separately: Platofrm.java + Player.java + Game.java + HangMan.java - Note that we did not ask you to submit your Main.java because we have our own test class that we will use to evaluate your solution. - Note that we will evaluate your solution on our own, and if we think it is necessary, we will invite you to a meeting to discuss the project. If we invite you to a project discussion, then it is mandatory to come. Otherwise, you will get zero. - Submission due is Saturday January 7th 11:59 PM. This is a firm deadline. - Do the project as teams of two students. Choose a teammate from your lab section. - We will check for plagiarism, and we will not tolerate cheating. - Do not share your code with other groups, and more importantly, do not ask other groups to share their code with you. Be respectful and do not try to coerce your classmates into cheating. - Again, we will check for cheating across all sections. That is a promise. - Finally, both team members need to submit the codes. However, include a README.txt file with the names of your teammates so we do not think you have cheated from each otherStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started