async def convert(cls, ctx, argument):
     teamname = None
     try:
         trole = await super().convert(ctx, argument)
         database.cur.execute("SELECT teamname FROM teamTable WHERE teamroleid=%s;" % trole.id)
         teamname = database.cur.fetchone()
         if teamname == None:
             return None
         teamname = teamname[0]
     except:
         database.cur.execute("SELECT teamname FROM teamTable WHERE lower(teamname)='%s';" % argument.lower())
         teamname = database.cur.fetchone()
         if teamname == None:
             return None
         teamname = teamname[0]
     database.cur.execute("SELECT teamname, captainID FROM teamTable WHERE teamname='%s';" % teamname)
     data = database.cur.fetchone()
     team = Team(teamname)
     captainID = data[1]
     team.captain = captainID
     database.cur.execute("SELECT discordID FROM playerTable WHERE team='%s';" % teamname)
     members = database.cur.fetchall()
     for id in members:
         team.add_player(bot.guild.get_member(id[0]))
     captain = bot.guild.get_member(captainID)
     if bot.guild.get_role(bot.NA_ROLE) in captain.roles:
         team.region = "NA"
     elif bot.guild.get_role(bot.EU_ROLE) in captain.roles:
         team.region = "EU"
     database.cur.execute("SELECT awards FROM teamTable WHERE teamname='%s';" % teamname)
     team.awards = database.cur.fetchone()[0]
     return team
示例#2
0
class Draft:
    def __init__(self, num_teams=12, per_team=13, starting_money=200):
        self.num_teams = num_teams
        self.team_size = per_team
        self.money_pool = starting_money * num_teams
        self.max_players_drafted = num_teams * per_team

        self.player_pool = Fantasy().players
        self.player_pool = self.sort(self.player_pool)

        self.drafted_players = []
        self.player_costs = self.estimate_costs()

        self.team = Team("my team")

    def sort(self, pool):
        return sorted(pool, key=lambda p: p.score, reverse=True)

    def show(self, count=15):
        self.estimate_costs(True, count)

    def show_drafted(self):
        i = 0
        for p in self.drafted_players:
            print(f"{i}. {p}")
            i += 1

    def undraft(self, i, cost):
        player = self.drafted_players.pop(i)
        print(f"Undrafting {player} for {cost}")
        self.player_pool.append(player)
        self.money_pool += cost

    def i_undraft(self, i, cost):
        player = self.drafted_players.pop(i)
        print(f"You undrafting {player} for {cost}")
        self.player_pool.append(player)
        self.money_pool += cost
        self.team.players.remove(player)

    def show_team(self):
        self.team.show()

    def i_draft(self, i, cost):
        player = self.player_pool.pop(i)
        print(f"You drafted {player} for ${cost}")
        self.team.add_player(player)
        self.drafted_players.append(player)
        self.money_pool -= cost

    def draft_player(self, i, cost):
        player = self.player_pool.pop(i)
        print(f"{player} drafted for ${cost}")
        self.drafted_players.append(player)
        self.money_pool -= cost

    def estimate_costs(self, verbose=False, shown=15):
        count = self.max_players_drafted - len(self.drafted_players)
        players = self.player_pool[:count]
        economy = self.money_pool
        total_score = reduce(lambda x, y: x + y, [p.score for p in players])
        point_cost = economy / total_score
        player_costs = [(p, int(p.score * point_cost)) for p in players]
        if verbose:
            print(f"Total score: {int(total_score)}")
            print(f"Total money: {int(economy)}")
            print("Cost per point: {0:.2f}".format(point_cost))
            print()
            i = 0
            for player, cost in player_costs[:shown]:
                print(f"{i}. {player}: ${cost}")
                i += 1
        return player_costs