diff options
Diffstat (limited to 'api/rating.py')
| -rw-r--r-- | api/rating.py | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/api/rating.py b/api/rating.py index e05645f..bc49fda 100644 --- a/api/rating.py +++ b/api/rating.py @@ -14,13 +14,17 @@ def get_all_games(user_id):              "where (player_1_id = ? or player_2_id = ?) " + \              "and status = \"finished\" or status = \"resign\"", [user_id, user_id]).fetchall() +# simple rating function that doesn't use game analysis  def get_rating(user_id):      score = 400      games = get_all_games(user_id) +    # get all games for user_id and switch perspective in which user_id is player_2_id      mapped_games = [game if game[0] == user_id else (game[1], game[0], outcome(game[2], False)) for game in games]      counted_opponents = {}      for game in mapped_games: +        # calculate sum score against user (+1 for win, -1 for lose, 0 for draw game)          counted_opponents |= {game[1]: (counted_opponents.get(game[1]) or 0) + { "w": 1, "l": -1, "d": 0 }[game[2]]}      for opponent in counted_opponents: +        # apply the cool curve to the sum score and add to the base score of 400          score += rating_v1(counted_opponents.get(opponent))      return int(score)  |