Задать вопрос

Как можно такое сделать?

Может кто-нибудь подсказать, как сделать чтобы в игре через каждый определенный промежуток времени прибавлялось число к переменной? И желательно попроще, я еще не очень сильно знаком с языком, и самим процессом программирования. Заранее благодарю
  • Вопрос задан
  • 564 просмотра
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Alex9
@Alex9
scp wisdom root@brain \n in progress...
import time
while True:
    time.sleep(60)
    data += 1
Ответ написан
Комментировать
@Lord_Prizrak
Программист, электронщик
В основном цикле получаешь время, сравниваешь его с предыдущим значением, и если оно изменилось например на 60мс, то увеличиваешь переменную.

time.sleep(60) - очень плохая идея. При высокой нагрузке будут лаги, потому как каждый момент цикла мы засыпаем на 60мс. Если у нас просчёт всего и отрисовка займёт 10мс, то одна итерация будет 10+60=70мс.
Ещё нормально. Если обсчёт и отрисовка займёт 100мс, то 160мс будет заметно пользователю.
Засыпать надо с умом. Определяешь сколько времени у тебя будет проходить одна итерация (я когда писал то взял время 30мс). Запоминаешь время начала итерации (т.е. в начале цикла), в конце цикла снова получаешь время. Вычисляешь разницу, и отнимаешь её от того время которое взял. Засыпаешь на это время:

import time
frame = 30 # время выполнения одного прохода (итерации) цикла
update_data_time = 900 # Время за которое увеличивается переменная
while True:
    start = time.clock()  # время начала выполнения
    что_то_делаем()

    if data_time<=0: # Пора обновлять переменную?
        data_time = update_data_time # сбрасывает флаг обновления
        data += 1  # увеличиваем переменную
    else:  # не пора
        data_time -= frame  # уменьшаем флаг обновления

    end = time.clock()  # время окончания выполнения
    delta = end-start  # вычисляем время выполнения фрейма
    time.sleep(frame-delta)  #спим


Хотя это не самый лучший способ, просто наглядный. И скорее всего в библиотеки которую ты используешь для написания есть функционал и для того и для другого.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы