所以我根据我正在编写的程序的速度等级进行攻击超时,但在数学方面我不是天才。因为我有一个像这样的公式speed = lambda x: x/50
基本速度等级默认为100,所以攻击将在speed(100)
每两秒发生一次。现在我想要的是攻击在更高的速度等级下发生得更快,而在更慢的速度等级下则更慢。即speed(98)
会返回高于2的内容,而speed(101)
会返回低于2的内容。这些数字只是示例,但主要的一点是,有一个公式可以根据更高的数字返回更低的数字基数,反之亦然?
示例:speed(101); returns x < y
和speed(98); returns x > y
y是一个常数,例如2。
答案 0 :(得分:1)
怎么样:
def speed(score, attacks_per_second):
"""
computes actual attack speed for a player with `score`,
assuming a player with a score of 100 could attack at
`attacks_per_second`. Lower scores are better.
"""
return attacks_per_second * (100 / score)
>>> speed (100, 2)
2.0
>>> speed (120, 2)
1.6666666666666667
>>> speed (80, 2)
2.5
编辑:由于我第一次误读,你想要更高的分数来降低速度,将100 /分数反转为得分/ 100。原件保存在这里:
def speed_inverse(score, attacks_per_second):
"""
as above, but higher scores are better
"""
return attacks_per_second * (score / 100)
>>> speed (120, 2)
2.4
>>> speed (80, 2)
1.6
答案 1 :(得分:1)
那只是分裂。 :)
attack_delay = 200 / speed
现在使用speed = 100
,攻击间隔两秒钟。使用speed = 50
,您的攻击间隔时间为4秒。 speed = 200
每秒攻击一次。