Мне кажется, что мне не хватает некоторых ключевых знаний о том, как работает многопоточность. Таймер работает.До сих пор я пытался найти какой-нибудь код, который поможет мне понять аргументы и kwargs для Timer и других, но мне не повезло.
Я пытаюсь учиться, создавая некоторый код, который будет похож на механику Wow Casting.Как вы можете видеть, это очень примитивно, но сейчас я сталкиваюсь с этой ошибкой несколько раз.Может кто-нибудь уточнить, в чем проблема с моим пониманием потоков. Так что я могу использовать его в будущем без каких-либо колебаний?Заранее спасибо.
from threading import Timer
def scope(x):
if x<0:
print("Has to be between 1 and 0")
elif x>1:
print("Has to be between 1 and 0")
else:
return x
def damage(spp,res):
scope(res)
c = spp - spp*res
return c
def fire_projectile():
print("Projectile fired!")
def casting_time(n_time,haste):
#Every haste unit deducts the casting time by 0.001 seconds.
general_time = n_time - haste/1000.00
print(general_time)
c = Timer(general_time, lambda: fire_projectile())
c.start()
return c
#The timer is here to count down the time needed in order for projectile to get launched.#
spells = {'Fireball': (250, 2), 'Pyrobalst' : (400, 3), 'Flamestrike': (190, 1.5)}
#First value is the natural damage of the spell. Second value is the casting time w/o haste.
classes = {'Death Knight': (0.6, 500), 'Mage': (0.2, 1200), "Priest": (0.4, 800)}
#First value is resistance to fire damage. Second value is haste.
print(damage(spells['Fireball'][0],classes['Death Knight'][0]))
print(casting_time(spells['Fireball'][1], classes['Mage'][1]))
После того, как я написал последние две строки, кажется, что первая работает довольно хорошо, но у второй есть некоторые проблемы.
Вместо: 100,0 0,8 Снаряд запущен!
Процесс завершен с кодом выхода 0
Я получил: 100,0 0,8 Таймер (поток-1, запущен 11268) Снаряд запущен!
Процесс завершен скод выхода 0