跟踪事件在一段时间内发生的次数

时间:2013-11-29 10:01:28

标签: python benchmarking

我正在使用Python开发一个小型RPG项目,我需要一些跟踪费率的变量。
一个是随着时间的推移造成的伤害 - 如果一个目标在过去的y秒内受到X伤害(对于一些较大的敌人可能长达10分钟),他们会被震惊。 (因此,能够实现更多伤害的技能更高的玩家可以获得眩晕奖励......因为转弯而且在同一时期内敌人也会受到更多攻击,因此被击晕的风险更高;

我设想这是比较(健康 - 10分钟前 - 健康 - 现在)与每次攻击后有关敌人的晕眩阈值。唯一的问题是,我不知道如何跟踪过去的变量。

另一个是在后台跟踪我想以指定速率向上/向下滚动的几个变量。 (我只是检查下次使用它时变量已经下降了多长时间(如果总和为负数则将其归零),但是只要这些变量中的一个变为零,我就需要触发一个不同的方法而且我希望拥有更高的数据分辨率,而不是每分钟将值更改为x。

如果有一个可以免费使用的devtool可以帮助处理这类事情,即使它不适用于Python,也只需指出我。 Python非常优雅,允许非Python,如果我需要完全交换,我应该能够管理。 (好吧,假设它仍然能够处理对象......对于一个项目的程序编程只需要很少的位,因为这需要对整个程序结构进行主要的返工...并且仍然会结束就我的OOP脑力洗脑而言,这是一个几乎无法理解的困境。)

1 个答案:

答案 0 :(得分:0)

我想到的第一个可能的解决方案是这样的:

# On these timestamps you have gained these demages:
hits_hostory = {1385723418: 2, 1385723420: 20, 1385723425: 15, 1385723428: 3}

# Current timestamp
now = 1385723429

# Calculate hits in last 10 seconds
hits_sum_moving_10 = 0
for t, h in hits_hostory.iteritems():
  if t > now - 10:
    hits_sum_moving_10 += h

print "In last 10s you got %s demage" % hits_sum_moving_average_10

但是可能有一些更好的Python类型可以帮助更多。此外,你必须解决hits_history dict的清理,因为它只会增长 - IMO应该很容易只备份经过“if”条件的项目,然后用这个新的较小的项目替换整个hits_history

旁注:有关python中游戏编程的精彩视频,请参阅http://youtu.be/duc3jYgAaR0