diff options
Diffstat (limited to 'model.py')
| -rw-r--r-- | model.py | 30 |
1 files changed, 23 insertions, 7 deletions
@@ -122,16 +122,15 @@ PLAYER_PER_COURT = 4 def create_single_game(court: Court, players: list[Player]): - team1 = Team(player1=players[0], player2=players[1]) - team2 = Team(player1=players[2], player2=players[3]) + team1 = Team(player1=players[0], player2=players[3]) + team2 = Team(player1=players[1], player2=players[2]) return Game(court, team1, team2) def create_possible_games(court_list: list[Court], players: list[Player]): - current_players = sample(players, len(court_list) * PLAYER_PER_COURT) clumped_players = [ - current_players[i : i + PLAYER_PER_COURT] - for i in range(0, len(current_players), PLAYER_PER_COURT) + players[i : i + PLAYER_PER_COURT] + for i in range(0, len(players), PLAYER_PER_COURT) ] games = [ create_single_game(court, clump) @@ -153,13 +152,30 @@ class GameList: games.sort(key=attrgetter("court.number")) self.games = games - def create_games(self, court_list: CourtList, player_list: PlayerList): + def create_random_games(self, court_list: CourtList, player_list: PlayerList): active_players = player_list.get_active_players() active_courts = [court for court in court_list.courts if court.status] inactive_courts = [court for court in court_list.courts if not court.status] possible_games = floor(len(active_players) / PLAYER_PER_COURT) + current_players = sample(active_players, possible_games * PLAYER_PER_COURT) active_games = create_possible_games( - active_courts[:possible_games], active_players + active_courts[:possible_games], current_players + ) + dummy_games = create_dummy_games(active_courts[possible_games:]) + reserved_games = create_reserved_games(inactive_courts) + games = active_games + dummy_games + reserved_games + games.sort(key=attrgetter("court.number")) + self.games = games + + def create_skilled_games(self, court_list: CourtList, player_list: PlayerList): + active_players = player_list.get_active_players() + active_courts = [court for court in court_list.courts if court.status] + inactive_courts = [court for court in court_list.courts if not court.status] + possible_games = floor(len(active_players) / PLAYER_PER_COURT) + current_players = sample(active_players, possible_games * PLAYER_PER_COURT) + current_players.sort(key=attrgetter("skill")) + active_games = create_possible_games( + active_courts[:possible_games], current_players ) dummy_games = create_dummy_games(active_courts[possible_games:]) reserved_games = create_reserved_games(inactive_courts) |
