summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKaran Jayachandra <mail@karanjayachandra.com>2024-12-02 19:43:33 +0100
committerKaran Jayachandra <mail@karanjayachandra.com>2024-12-02 19:43:33 +0100
commitb9967b20dddaed6673d2333edc7cdee735ed1395 (patch)
tree2b1010abd4abe856f22a4c72efac049ae4568803 /src
parentbeea33bc183837a3feceaf1b5127c2e21e16fc36 (diff)
Added a random selection even for teams
Diffstat (limited to 'src')
-rw-r--r--src/match_up/controller.py15
-rw-r--r--src/match_up/utilities.py8
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])
)