private HockeyTeam(HockeyTeam team) // Copy constructor { Location = team.Location; }
// ============================================================== private void Balance(HockeyTeam strongTeam, HockeyTeam weakTeam) // ============================================================== { HockeyPlayer strongPlayer = null; HockeyPlayer weakPlayer = null; int teamScoreDifferential = strongTeam.TeamScore - weakTeam.TeamScore; if (strongTeam.PlayerCount == weakTeam.PlayerCount) // The player counts are equal so swap one for one { switch (teamScoreDifferential / 2) { case 5: // No swap; move an A Console.WriteLine("BalanceDifferential11/10: Try to move an A player from strong to weak"); HockeyPlayer player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); // Perform the swap if a player is available if (player != null) { Console.WriteLine("BalanceDifferential11/10: Perform the move"); weakTeam.AddAPlayer(player); strongTeam.RemoveAPlayer(player); } break; case 4: // No swap; move an A Console.WriteLine("BalanceDifferential9/8: Try to move an A player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); // Perform the swap if a player is available if (player != null) { Console.WriteLine("BalanceDifferential9/8: Perform the move"); weakTeam.AddAPlayer(player); strongTeam.RemoveAPlayer(player); } break; case 3: // Swap an A for a D Console.WriteLine("BalanceDifferential7/6: Try to swap an A with a D"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); break; case 2: // Swap an A for a C or a B for a D Console.WriteLine("BalanceDifferential5/4: Try to swap a B with a D"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); if (strongPlayer == null || weakPlayer == null) { // If we can't do that try to swap an A (4) with a C (2) Console.WriteLine("BalanceDifferential5/4: Try to swap an A with a C"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } break; case 1: // Swap an A for a B, a B for a C, or a C for a D // Try to swap an A with a B Console.WriteLine("BalanceDifferential3/2: Try to swap a C with a D"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); if (strongPlayer == null || weakPlayer == null) { // If we can't do that try to swap a B with a C Console.WriteLine("BalanceDifferential3/2: Try to swap a B with a C"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (strongPlayer == null || weakPlayer == null) { // If we can't do that try to swap a C with a D Console.WriteLine("BalanceDifferential3/2: Try to swap an A with a B"); strongPlayer = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); weakPlayer = weakTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } break; } // Perform the swap if the players are available if (strongPlayer != null && weakPlayer != null) { Console.WriteLine("BalanceTeams: Perform the swap"); strongTeam.AddAPlayer(weakPlayer); weakTeam.AddAPlayer(strongPlayer); strongTeam.RemoveAPlayer(strongPlayer); weakTeam.RemoveAPlayer(weakPlayer); } } else // (strongTeam.PlayerCount > weakTeam.PlayerCount) The strong team player count is greater so move a player { HockeyPlayer player = null; switch (teamScoreDifferential / 2) { case 5: Console.WriteLine("BalanceDifferential11/10: Try to move an A player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); if (player == null) { Console.WriteLine("BalanceDifferential11/10: Try to move a B player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } break; case 4: Console.WriteLine("BalanceDifferential9/8: Try to move an A player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); if (player == null) { Console.WriteLine("BalanceDifferential9/8: Try to move a B player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } break; case 3: Console.WriteLine("BalanceDifferential7/6: Try to move a B player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); if (player == null) { Console.WriteLine("BalanceDifferential7/6: Try to move a C player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } break; case 2: Console.WriteLine("BalanceDifferential5/4: Try to move a C player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); if (player == null) { Console.WriteLine("BalanceDifferential5/4: Try to move a D player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } break; case 1: Console.WriteLine("BalanceDifferential3/2: Try to move a D player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); if (player == null) { Console.WriteLine("BalanceDifferential3/2: FAIL: Try to move a C player from strong to weak"); player = strongTeam.GetASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } break; } // Perform the swap if a player is available if (player != null) { Console.WriteLine("BalanceTeams: Perform the move"); weakTeam.AddAPlayer(player); strongTeam.RemoveAPlayer(player); } } }
// ============================================================== private bool AddLowerSkillPlayer(HockeyTeam team, int scoreDifferential) // ============================================================== { bool addedPlayerToRoster = false; //Console.WriteLine($"AddLowerSkillPlayer: scoreDifferential = {scoreDifferential}"); //Console.WriteLine(); if (scoreDifferential <= 1) { //Console.WriteLine("AddLowerSkillLevelPlayer: scoreDifferential <= 1"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } } else if (scoreDifferential == 2) { //Console.WriteLine("AddLowerSkillLevelPlayer: scoreDifferential == 2"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } } else if (scoreDifferential == 3) { //Console.WriteLine("AddLowerSkillLevelPlayer: scoreDifferential == 3"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } } else // (scoreDifferential == 4) { //Console.WriteLine("AddLowerSkillLevelPlayer: scoreDifferential == 4"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } } //Console.WriteLine($"addedPlayerToRoster: {addedPlayerToRoster}"); //Console.WriteLine(); return(addedPlayerToRoster); }
// ============================================================== private bool AddHigherSkillPlayer(HockeyTeam team, int[] teamCompositionDiff, int scoreDifferential) // ============================================================== { bool addedPlayerToRoster = false; //HockeyTeam teamInstance = null; //if (team.Location == HockeyTeam.Residence.Home) //teamInstance = HomeTeam.Instance; //else //teamInstance = VisitorTeam.Instance; //Console.WriteLine($"AddHigherSkillPlayer: scoreDifferential = {scoreDifferential}"); //Console.WriteLine($"AddHigherSkillPlayer: {teamCompositionDiff[0]}.{teamCompositionDiff[1]}.{teamCompositionDiff[2]}.{teamCompositionDiff[3]}"); //Console.WriteLine(); // Check for Level A if (teamCompositionDiff[0] != 0) // Looking for an 'A' level player { //Console.WriteLine($"AddHighSkillLevelPlayer: teamCompositionDiff[A] == {teamCompositionDiff[0]}"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } } // Check for Level B else if (teamCompositionDiff[1] != 0) // Looking for a 'B' level or better player { //Console.WriteLine($"AddHighSkillLevelPlayer: teamCompositionDiff[B] == {teamCompositionDiff[1]}"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } } // Check for Level C else if (teamCompositionDiff[2] != 0) // Looking for a 'C' level or better player { //Console.WriteLine($"AddHighSkillLevelPlayer: teamCompositionDiff[C] == {teamCompositionDiff[2]}"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); } } // Check for Level D else // (teamCompositionDiff[3] != 0) { //Console.WriteLine($"AddHighSkillLevelPlayer: teamCompositionDiff[D] == {teamCompositionDiff[3]}"); addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_D); if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_C); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_B); } if (addedPlayerToRoster == false) { addedPlayerToRoster = team.AddASkillPlayer(HockeyPlayer.PlayerSkill.Level_A); } } //Console.WriteLine($"addedPlayerToRoster: {addedPlayerToRoster}"); //Console.WriteLine(); return(addedPlayerToRoster); }