游戏评分命令行工具和Python库
项目描述
Rayter
Rayter是一个生成玩家评分的程序,可以将多个游戏的评分结果存储在文件中。
它可以以命令行程序的形式使用,也可以作为Python库使用。
安装Rayter
pip install rayter
运行Rayter命令行工具
rayter games_file.txt
将Rayter作为库使用
Rayter可以用作Python库
>>> from rayter.rater import rate_single_game, SCORE_TYPE_HIGH_SCORE
>>> scores = [100, 74, 93]
>>> ratings = [1889, 1400, 1662]
>>> rating_changes = rate_single_game(scores, ratings, score_type=SCORE_TYPE_HIGH_SCORE)
>>> rating_changes
[-1.7346441947565552, -1.3906367041198422, 3.1252808988764116]
Rayter文件格式
Rayter命令行工具期望的rayter文件格式设计为可以通过文本编辑器手动轻松创建。以下是一个包含两场红心游戏的示例文件
score_type lowscore game 2011-12-24 22:00 Jessica 95 Hugo 77 Jonatan 89 Jakob 103 game 2011-12-24 23:19 Hugo 107 Jonatan 96 Peter 65 Jakob 70
score_type lowscore 表示在这个游戏中,目标是尽可能得到低分。 score_type
的选项有 lowscore
、highscore
(默认,如果未指定 score_type)和 winner_takes_all
(用于具有二元结果的游戏,例如国际象棋)。
空格字符的数量无关紧要。
时间戳的格式为年-月-日 时:分,其中小时是从 0 到 23。时间戳目前仅用作游戏的标识符。
Rayter 算法
每位玩家开始时的评分为 1000。所有评分的总和始终是联赛中玩家数量的 1000 倍。因此,如果一位玩家在一场比赛中获得 +60 分,而其他所有玩家都失去评分,那么他们评分变化的总和将是 -60。
如果一个评分为 1200 的玩家在与评分为 1000 的对手对战中,第一个玩家预计比第二个玩家多得 20% 的分数。这意味着如果第一个玩家在比赛中得到 240 分,而第二个玩家得到 200 分,那么两个玩家的评分变化将为 0,因为 240 除以 200 等于 1200 除以 1000。
示例
以下是一些虚构卡片游戏的结果
game 2011-12-24 23:19 Dahlia 27 John 15 Ahmed 14 Lei 10 game 2011-12-25 21:12 John 23 Dahlia 10 Lei 4 Ahmed 4
第一场比赛后,评分将如下所示
Name Games Rating Delta Dahlia 1 1032 32 John 1 995 -5 Ahmed 1 992 -8 Lei 1 980 -20
当第二场比赛进行时,评分变为以下这样
Name Games Rating Delta John 2 1058 62 Dahlia 2 1029 -3 Ahmed 2 962 -30 Lei 2 951 -30
有关详细信息,请参阅 rater.py
中的 rate_single_game()
函数。
项目详情
关闭
rayter-1.0.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 309f08254da6a05b44a69e006bc0afda25b5823f99a2b83a23f67ee5dbdaca46 |
|
MD5 | 862ad17916534f7e4be1806268326b3b |
|
BLAKE2b-256 | 8cb22328448e6d42815afed04ddebac91dfc76a15355c1ae705ab3b122de99b0 |