2013-07-07 34 views
0

我使用pygame的和livewires在卡拉狄加類型遊戲的工作規定量某段代碼運行。然而,在這場比賽中,不是敵人,而是你射擊的氣球。每25次鼠標點擊一次,我就會使用設置爲1的dy屬性將氣球向下移動。如果氣球到達底部,則遊戲結束。但是,我很難找出如何讓它只運行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的初始值的全局變量。我想弄清楚的是在CLICKS語句下放置的算法。我已經瀏覽了時間模塊上的python文檔,但似乎無法找到任何適合此目的的東西。另外,我不認爲使用while循環會在這裏工作,因爲計算機會立即檢查這些結果,而我需要一個實際的計時器。

+0

你可以有一個計時器重複呼叫的功能。但我認爲你真正想要的是點擊,你應該使用點擊事件。結合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