想想游戏,玩家正试图解决问题,而每个问题实际上都意味着“等级”。
玩家在玩游戏时会看到实时排名。
RedisIO有分类设置功能,我会用它。
但我不知道如何给球员打分:
PlayerA at 7 level, total game time 80 seconds
PlayerB at 7 level, total game time 65 seconds
PlayerC at 5 level, total game time 40 seconds
PlayerD at 1 level, total game time 200 seconds
我想要的排名就像这样
1) PlayerB - because level 7 and 65 seconds
2) PlayerA - because level 7 and 80 seconds
3) PlayerC - because level 5 and 40 seconds
4) PlayerD - because level 1 and 200 seconds
我试过
(timeSpent/level)
计算但是当某人的水平较低且花费的时间少于其他玩家时,它的效果不佳。
答案 0 :(得分:1)
简答:你可以拥有以下功能:
score = (level * HUGE_NUMBER) - timeSpent
对于HUGE_NUMBER
,您可以选择一个稍大于完成关卡所需的最长时间的值。
虽然对于大多数情况来说这可能已经足够了,但我宁愿使用排序来解决这个问题,以避免排名算法中任何潜在的看不见的错误。
假设玩家的level
是排名的主导因素,我会按降序排列所有玩家level
。这可能会给你这样的东西(注意它还不是最终排名):
1) PlayerA - because level 7 and 80 seconds
2) PlayerB - because level 7 and 65 seconds
3) PlayerC - because level 5 and 40 seconds
4) PlayerD - because level 1 and 200 seconds
然后,我将在每个level
中创建玩家的子列表,并按time
按升序对其进行排序。在上面的示例中,第二个排序将为您提供最终正确的排名。
1) PlayerB - because level 7 and 65 seconds
2) PlayerA - because level 7 and 80 seconds
3) PlayerC - because level 5 and 40 seconds
4) PlayerD - because level 1 and 200 seconds