NHL Simulator Tool

Order Description

Aim – To implement a simulation of an ice hockey season in one of the divisions of the NHL (National Hockey League) that would potentially allow a given team to estimate its chances of making it to the playoffs. The simulation will run as a text-based, interactive, and menudriven program that will comply with a set of rules as specified below. The objectives in this assignment are multiple. First, to build a small prototype of a data analysis tool, using as input artificial data generated as pseudo-random numbers, which could eventually grow to a robust hockey player performance evaluation tool using real NHL statistical data. Second, to give you practice designing and coding simple classes and methods using loops, conditionals and console I/O in the Java language. Third, to give you an initial exposure to object-oriented techniques to solve computational problems. To attain the goals of this prototype, you will write the following Java classes: 1) A class Player to keep track of identification and performance attributes for a hockey player. 2) A class Team to maintain hockey player configurations and team results. 3) A class Game to simulate and capture the results of a hockey game. 4) A main driver class NHLSimulator that will be able to simulate the results of each and all the ice hockey games scheduled for an NHL hockey season and conference, respond to inquiries about individual players, handle the interactions with the user of the simulation via a text-based interactive menu, and display on the user’s console a formatted report according to a given specification. General Description As a software developer, working for the administration office of the Toronto Maple Leafs ice hockey team, you have been tasked to write a Java program that would simulate the results of hockey games based on a random, range-limited estimation of the skill level of the players involved in them. Executive management at this hockey club wants to have this simulation tool to estimate how well the current player roster would fare against other teams in its own conference. They would like to know whether the team has a good chance of making it to the playoffs this year. To meet this goal, the team needs to finish the regular season in at least the 8th position in its conference. An annual NHL season is played in two conferences: Eastern and Western, each one having 16 (see Table 1, Appendix A) and 15 teams, respectively. Your program will simulate game results between Eastern conference teams only, that is, interconference games are not included. Therefore, the final tallying of results and team positions in the Eastern conference will be based only on the games specified above. During a regular hockey season, every Eastern conference team plays two games against every other team in the same conference, one as a visitor and one as a host. If at the end of regulation time, both times are tied (have scored the same number of goals), the game goes to overtime. For simplicity, we will consider that each game ends in regulation time or in overtime (i.e., no shootouts). The first team to score a goal in overtime wins the game. The game’ sCISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 2 winning team gets 2 points, and the losing team gets 0 points if the game ended in regulation time, 1 point if it ended in overtime. For the simulation, we will consider that each team has 13 forwards, 8 defensemen and 4 goalies, for a total of 25 players. Each player has a skill level (i.e., ability to play the game) represented by integers, between 1 (lowest) and 10 (highest). The skill levels for the Toronto Maple Leafs players are shown in Table 1, Appendix A (along with their player numbers and types (forward, defense or goalie). The program will randomly generate the skill levels for the players in the other remaining 15 teams, using the skill level ranges provided in Table 2, Appendix A. For example, Boston’s forwards will get a randomly-assigned skill level between 5 and 9, defensemen will get an integer between 4 and 9, and goalies an integer between 5 and 7. This same logic applies for all the remaining teams in Table 2, Appendix A. The program will randomly assign to each player a unique integer identifier between 1 and 99. It will name the player as Fn (forwards), or Dn (defensemen), or Gn (goalies), where n is the identifier assigned to the player. It will also decide whether a player is a forward, defenseman or goalie, respecting the quotas defined for each player type (i.e., 13 forwards, 8 defensemen, 4 goalies). To simulate the outcome of a game involving two teams (let’s say teams 1 and 2), your program will apply the following rules: 1. Add up the skill level of all the forwards and defensemen in each of the two teams. Let us call these totals P1 and P2. 2. Randomly select one of the 4 goalies in each team. Let us call the skill levels of the goalies selected from teams 1 and 2 “G1” and “G2”, respectively. 3. Compute the total skill levels for teams 1 and 2 as: T1 = P1 + G1 and T2 = P2 +G2, respectively. 4. For each of the two teams, randomly decide whether its forwards, defensemen and goalie will play well, poorly, or at their initially-specified skill level in the current game. 5. If the forwards play well, add 25 points to the team’s total skill level (i.e., T1 = T1 + 25, or T2 = T2 + 25). If they play poorly, subtract 25 points from the team’s total skill level (i.e., T1 = T1 - 25, or T2 = T2 - 25). If they play at their initially-specified skill level, do not change T1 (or T2). Similarly, in the case of defense players, add or subtract 40 points. In the case of the goalie, add or subtract 60 points. 6. During regulation time, each team will randomly score 0, 1 or 2 goals for each 50 points computed in its total skill level computed for the current game (i.e., T1 and T2). It will score 0 or 1 goals for a remainder fraction of 50 points. 7. During overtime, each team will randomly select 3 players among forwards and defensemen and will randomly select one of the four goalies. The total skill level for all the 4 players will be computed in each team. The team whose total skill level, computed in this manner, is greater, will be the first to score one goal in overtime (and terminate the game). If both totals are equal, your program will randomly decide which team scored the first overtime goal.CISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 3 Program Implementation Requirements I – User Interface and Program Flow Upon starting, the program will display on the console the following menu: NHL Simulator (Version 0.1). Author: [Your first and last name] 1 – Simulate NHL Season (Eastern Conference) 2 – View Team Skill Level Profile 3 – Display End of Regular Season Table Select Option [1, 2 or 3] (9 to Quit): Upon completing the processing of any of the operations 1, 2, or 3, your program will return to display the previous menu and wait for the user to select a menu option. If the user enters 9, the program terminates. a) Simulate NHL Season (Eastern Conference) – Selecting this option will run a simulation of all the 240 games in the Eastern Conference for the current regular season, using the algorithm described in the “General Description” section. After completing the simulation, your program will display the teams with the most and least points at the end of the regular season, as follows: NHL Regular Season – Eastern Conference – 2018/2019 First Team: [Team Name] Points: [# of Points] Last Team: [Team Name] Points: [# of Points] Simulation completed! Afterwards, the program will return to the main menu. b) View Team Skill Level Profile – Selecting this option will display the prompt: Enter Team Name: The user must enter one of the names listed in Table 2, Appendix A. If the name is invalid, the program must display: [Entered name] is invalid! Please re-enter or press [Enter] If the user just pressed [Enter] and no team name, then the program returns to the main menu. Otherwise, it displays: Enter Team Name: If the team name is valid, the program displays skill level data for all the players in the team requested, using the following format, and returns back to the main menu: No Name Position Skill Level *** ****************** ********** ******** 34 F34 Forward 8 Etc.CISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 4 If the user selects this option without first running option 1: Simulate NHL Season (Eastern Conference), the program displays the following error message and returns to the main menu: Must run NHL Eastern Conference Simulation before accessing this option! c) Display End of Regular Season Table – Selecting this option will display the Total Scores and Statistics Report for the Eastern Conference, as of the end of the 2018/2019 regular season. The program lists the teams in alphabetical order (as shown in Table2, Appendix A), using the format shown below, and returns to the main menu. TOTAL SCORES AND STATISTICS REPORT ********************************* Team Name GP W L OTL Pts GF GA Diff ******************* ***** ***** ***** ****** ***** ***** ***** ****** Boston 30 18 10 2 38 83 71 +12 Buffalo 30 9 18 3 21 51 85 -34 Etc. After displaying the report, the program will issue the prompt: Press Enter to continue; thereafter, it will return to and display the selection menu. If the user selects this option without first running option 1: Simulate NHL Season (Eastern Conference), the program displays the following error message and returns to the main menu: Must run NHL Eastern Conference Simulation before accessing this option! II – Testing Produce a trace file named runlog.txt, which contains the logging of all the user interaction and output displayed on the console for the menu selections explained in section I, points a), b) and c). (Note: runlog.txt should include the output produced in “Total Scores and Statistics Report”). III – Analysis 1) According to your run of the simulation, did the Toronto Maple Leafs make it to the playoffs? 2) If they didn’t, what do you think would be the minimum skill level required by the defensemen and goalies in order to make it to the playoffs? 3) If they did, what do you think would be the minimum skill level required by the defensemen and goalies in order to end the regular season in first place? Provide your answers in a text file named answers.txt.CISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 5 III – Submission Compress the source code for classes NHLSimulator, Team, Player and Game, as well as files runlog.txt and answers.txt, into a single zip archive file named: [your student number]_Assignment1.zip For example, if your student number is 12345678 then you will name your submission file as 12345678_Assignment1.zip Submit file [your student number]_Assignment1.zip via onQ by January 30, 2018, 11:00 p.m. IV – Marking Scheme • Implementation of class NHLSimulator 3 points • Implementation of class Player 3 points • Implementation of class Team 3 points • Implementation of class Game 3 points • Generation of runlog.txt trace file 4 points • Answers provided in answers.txt file 2 points • Code style and documentation 2 points ________ TOTAL: 20 points V – Additional Guidelines for this Assignment • Your program should use good indentation and white space, good variable names and some internal comments explaining what the code is doing. One comment at the top of the program should contain at least your name, your NetID, date, and an overall description of what your program does (3 to 4 lines). • Use the Random class, in the java.util package, to create a random number generation object seeded with an arbitrary number. For example, the following code accomplishes this: static Random generator = new Random(System.currentTimeMillis()); System.currentTimeMillis() returns the current time in milliseconds, so it will yield a different seed value every time you run your program. You need to call the nextInt() method (see details in the Java API documentation) in the generator object to obtain a new random integer. This object could be assigned to an attribute of class NHLSimulator.CISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 6 Appendix A Table 1: Toronto Maple Leafs Roster No. Name Position Skill Level 28 C. Brown forward 5 63 T. Ennis forward 4 33 F. Gauthier forward 5 11 Z. Hyman forward 7 18 A. Johnsson forward 7 43 N. Kadri forward 7 24 K. Kapanen forward 8 26 P. Lindholm forward 8 12 P. Marleau forward 8 16 M. Marner forward 9 34 A. Matthews forward 9 29 W. Nylander forward 9 91 J. Tavares forward 10 23 T. Dermott defenseman 8 51 J. Gardiner defenseman 4 2 R. Hainsey defenseman 5 3 J. Holl defenseman 6 52 M. Marincin defenseman 4 92 I. Ozhiganov defenseman 6 44 M. Rielly defenseman 9 22 N. Zaitsev defenseman 8 31 F. Andersen goalie 10 30 M. Hutchinson goalie 7 50 K. Kaskisuo goalie 5 40 G. Sparks goalie 6CISC124 – Winter 2019 Lab Assignment 1: NHL Simulator Tool Page 7 Table 2: Teams in the Eastern Conference No Team Forwards Skill Level Range Defensmen Skill Level Range Goalies Skill Level Range 1 Boston 5 – 9 4 – 9 5 – 7 2 Buffalo 6 – 9 4 – 7 4 – 7 3 Carolina 4 – 8 5 – 7 4 – 9 4 Columbus 4 – 9 5 – 8 7 – 10 5 Detroit 4 – 7 6 – 8 4 – 6 6 Florida 5 – 7 4 – 8 5 – 9 7 Montréal 4 – 7 4 – 7 4 – 9 8 New Jersey 4 – 7 4 – 7 5 – 6 9 NY Islanders 6 – 8 5 – 7 6 – 8 10 NY Rangers 5 – 7 4 – 6 5 – 7 11 Ottawa 4 – 6 4 – 5 4 – 5 12 Philadelphia 4 – 6 4 – 6 4 – 7 13 Pittsburgh 6 – 10 4 – 7 5 – 7 14 Tampa Bay 6 – 10 6 – 10 7 – 9 15 Washington 6 – 10 5 – 8 6 – 8