Дополнен 10 месяцев назад
Пробовал через потоки ,но из за того что я помещаю функцию в основной цикл то sleep() все равно выполняется, а без нее изменение значений происходит очень быстро.
если создавать новый цикл while до или после основного в PYGAME, он не работает.
Дополнен 10 месяцев назад
Забыл написать, что работаю с Pygame
К примеру на pygame у меня есть персонаж игры. И когда он получает урон он должен регенерировать свои хп каждую секунду.
hp = 100
if hp < 100:
hp = hp +1
если добавить sleep(1) , то жизни будут восстанавливаться до 100, но при этом будет тормозить анимация,перемещение его и других объектов и тд. Так как я помещаю это условие или такую же функцию в основной цикл игры.
Если sleep(1) убрать, то восстановление будет слишком быстрым.
Вот не могу понять как замедлить изменение значения переменной hp ,чтобы она увеличивалась на определенное число в определенное количество времени, но при этом не тормозила основной цикл.
так же происходит если записать
def regen():
hp = hp +1
и поместить эту функцию в основной цикл игры на pygame
while
if hp < 100:
regen()
В данном случае если игрок получил урон допустим 30, то есть hp стало 70, то восстановление до 100 происходит меньше чем за секунду.
Если добавляю sleep(1) - вся игра начинает тормозить, анимации и другое ждут 1 секунду чтобы цикл пошел по кругу.
Либо еще пример.
Есть некая переменная
total = 0
и эта переменная должна прибавляться на +1 каждую секунду, при этом персонаж , враги и прочие действия должны выполнятся как обычно , без задержек.
Если прописать в основной игровой цикл while
sleep(1)
total = total + 1
то, опять же переменная будет меняться раз в секунду , но будет тормозить все остальные действия, например анимация будет обновляться раз в секунду (что очень долго)
Заранее спасибо!