2013-07-07 2 views
0

Я работаю над типом игры в галактике, используя pygame и livewires. Однако в этой игре вместо врага есть воздушные шары, которые вы стреляете. Каждые 25 щелчков мыши, у меня есть воздушные шары, перемещающиеся вниз, используя свойство dy, установленное в значение 1. Если воздушный шар достигает дна, игра заканчивается. Тем не менее, у меня есть некоторые проблемы с выяснением, как заставить это работать только, скажем, 1 секунду или 2 секунды. Поскольку у меня нет возможности «времени» получить результаты, значение dy на неопределенный срок устанавливается равным 1. Поэтому после первых 25 щелчков строка просто продолжает двигаться вниз. Это нормально, но, как я уже сказал, это не мой намеченный результат.Выполнение определенной части кода за определенное количество времени

Вот код, который я до сих пор для этого действия:

if games.mouse.is_pressed(0): 
     new_missile = missile(self.left + 6, self.top) 
     games.screen.add(new_missile) 
     MISSILE_WAIT = 0 #25 
     CLICKS += 1 
     if CLICKS == 25: 
      SPEED = 1 
      CLICKS = 0 

КЛИКОВ и MISSILE_WAIT глобальные переменные, которые создаются и устанавливают в исходное значение 0 до этого блока кода. То, что я пытаюсь выяснить, - это алгоритм, который следует поставить под оператором if CLICKS. Я просмотрел документацию python в модуле времени, но просто не могу найти ничего, что бы соответствовало этой цели. Кроме того, я не думаю, что использование цикла while будет работать здесь, потому что компьютер проверяет эти результаты мгновенно, в то время как мне нужен фактический таймер.

+0

Вы можете иметь таймер повтора вызова функции. Но я думаю, что вы действительно хотите нажать на клик, который вы должны использовать событие click. Комбинация с pygame.time.get_ticks – ninMonkey

+0

По существу, я пытаюсь найти способ переместить спрайт с помощью свойства dy в течение 1 секунды. Я возился с функциями pygame.time, но не мог заставить их работать. – emufossum13

ответ

0

Я не уверен, если я получил ваш вопрос, но то, что я могу предположить, что:

class Foo(): 
    def __init__(self): 
     self.start_time = time.time() 
     self.time_delay = 25 # seconds 

    def my_balloon_func(self): 
     if(time.time() - self.start_time) > self.time_delay: 
      self.start_time = time.time() 
     else: 
      # do something 
+0

'pygame.time.get_ticks()' возвращает время в ms – ninMonkey

Смежные вопросы