diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/match_up/controller.py | 15 | ||||
| -rw-r--r-- | src/match_up/utilities.py | 8 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/match_up/controller.py b/src/match_up/controller.py index 585160f..a02dd04 100644 --- a/src/match_up/controller.py +++ b/src/match_up/controller.py @@ -2,7 +2,7 @@ from typing import Tuple from operator import attrgetter from match_up.data import Game, PLAYER_PER_COURT from match_up.model import Player, PlayerList, CourtList -from match_up.utilities import _create_placeholders, _select_players, _create_games, _create_team_games +from match_up.utilities import _create_placeholders, _select_players, _create_shuffle_games, _create_team_games class RoundGenerator: @@ -45,21 +45,18 @@ class RoundGenerator: active_teams = {} players_without_team = [] for team_id in grouped_players_by_team: - if team_id == 0: + if team_id == 0 or len(grouped_players_by_team[team_id]) < 4: players_without_team += [player for player in grouped_players_by_team[team_id]] else: - if len(grouped_players_by_team[team_id]) >= 4: - active_teams[team_id] = grouped_players_by_team[team_id] - else: - players_without_team += [player for player in grouped_players_by_team[team_id]] + active_teams[team_id] = grouped_players_by_team[team_id] regular_courts = len(used_courts) - len(active_teams) reg_courts = {A:N for (A,N) in [x for x in used_courts.items()][:regular_courts]} team_courts = {A:N for (A,N) in [x for x in used_courts.items()][regular_courts:]} - required_player_count = required_player_count - (4 * len(active_teams)) + required_player_count = required_player_count - (PLAYER_PER_COURT * len(active_teams)) selected_players_without_team = _select_players(players_without_team, required_player_count) - regular_games = _create_games(reg_courts, selected_players_without_team, total_levels) + regular_games = _create_shuffle_games(reg_courts, selected_players_without_team, total_levels) team_games, selected_players_with_team = _create_team_games(team_courts, active_teams) @@ -67,7 +64,7 @@ class RoundGenerator: games = regular_games + team_games else: selected_players = _select_players(active_players, required_player_count) - games = _create_games(used_courts, selected_players, total_levels) + games = _create_shuffle_games(used_courts, selected_players, total_levels) return games, selected_players def update_player_list(self, csv_location): diff --git a/src/match_up/utilities.py b/src/match_up/utilities.py index dd9568c..7d7de08 100644 --- a/src/match_up/utilities.py +++ b/src/match_up/utilities.py @@ -2,7 +2,7 @@ from math import floor from typing import Tuple from random import shuffle from pandas import read_csv -from random import randint, getrandbits +from random import randint, getrandbits, sample from names import get_first_name, get_last_name from match_up.data import Player, DisplayPlayer, Team, Game from match_up.data import ( @@ -71,7 +71,7 @@ def _create_groups_of_four_players( return court_players -def _create_games(courts: dict, players: list[Player], levels: int) -> list[Game]: +def _create_shuffle_games(courts: dict, players: list[Player], levels: int) -> list[Game]: court_players = _create_groups_of_four_players(players, levels) games = [] for court, players in zip(courts, court_players): @@ -88,7 +88,9 @@ def _create_team_games(courts: dict, teams: dict) -> tuple[list[Game], list[Play games = [] selected_players = [] for court, (_, players) in zip(courts, teams.items()): - selected_players.append(players[:3]) + players = sample(players, PLAYER_PER_COURT) + selected_players.append(players) + players.sort(key=lambda x : x.level, reverse=True) team1 = Team( player1=DisplayPlayer(players[0]), player2=DisplayPlayer(players[3]) ) |
