2013-11-29 2 views
0

Я работаю над небольшим проектом RPG на Python, и у меня есть пара переменных, которые мне нужны для отслеживания ставок.
Один из предметов со временем - если цель получает X-урон за прошлые y секунд (возможно, до 10 минут для некоторых из более крупных врагов), они ошеломлены. (Таким образом, более искусные игроки, которые могут на самом деле тратить больше урона, получают оглушающие бонусы ... с более высоким риском ошеломления, поскольку его поворот и враг также получают больше атак за тот же период)Отслеживать, сколько раз событие происходит в течение определенного периода времени

Я представляю это как сравнивая (здоровье-10 минут назад - здоровье сейчас) с оглушающим порогом для данного врага после каждой атаки. Единственная проблема заключается в том, что я не знаю, как отслеживать, какая переменная была в прошлом.

Другое отслеживание нескольких переменных, которые я хочу прокрутить вверх/вниз по указанной скорости, в фоновом режиме. (Я просто попробую проверить, как долго переменная выпадает при следующем использовании (и обнуление ее, если сумма отрицательная), но мне нужно вызвать другой метод, как только одна из этих переменных обратится в нуль И я предпочел бы иметь более высокое разрешение данных, чем просто изменить значение на x каждую минуту в минуту.

Если есть свободный доступ к этому файлу devtool, который поможет справиться с такими вещами, даже если это не для Python, просто укажите на него. Python довольно изящный о том, чтобы разрешить не-Python, и если мне нужно полностью обмениваться, я должен уметь управлять. (Ну, полагая, что он все еще способен обрабатывать объекты ... процедурное программирование для проекта с таким количеством бит, как это потребовало бы майора доработки всей структуры программы ... и все равно в конечном итоге была бы голой . LY вразумительное болото, насколько моя ООП-промывание мозгов ума обеспокоен)

+1

Что о создании объекта нового типа, ведут себя как переменные, но внутренне хранение истории значений/ставок/статистики? –

ответ

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, поскольку он будет только расти. ИМО должно быть легко сделать резервную копию только элементов, проходящих через условие «если», а затем заменить весь hits_history на этот новый меньший.

Side Примечание: для красивого видео на играх программирование в питоне см http://youtu.be/duc3jYgAaR0