2016-04-23 44 views
0

我在pygame中使用Python 2.7.6,而且我仍然對編程和pygame很陌生。有一種方法可以使它在如果我有數字的地方,它將會從0到1到2到3到4到5而不是0到5?就像地球上的衛生系統一樣,它不僅會下降,而且會一次減少一個數字。我試圖在for循環中使用time.sleep(),但它只是暫停了我的整個遊戲一秒鐘。手錶編號在pygame中加起來

for i in range(7): 
    time.sleep(.5) 
    dodged += 1 

我累了沒有time.sleep(),但它太快,甚至看不到。

for i in range(7): 
    dodged += 1 

有人知道如何做到這一點?

回答

1

您應該使用pygame.time.set_timer在您的遊戲(週期性事件在這種情況下,越聚越多你的事件循環之前,運行這段代碼:

increase_event = pygame.USEREVENT + 1 
pygame.time.set_timer(increase_event, number_change_time_in_milliseconds) 

而且在循環運行此代碼:

if event.type == increase_event 
    dodged += 1 
+0

我沒有得到一個錯誤,但它像以前一樣的工作方式相同什麼NU我是否編輯改變它有多大?我試着改變number_change_time變量爲10,但它的工作原理是一樣的。 – 0swald

+0

number_change_time以毫秒爲單位。你可能會混淆單位。 – ppperry

0

是這樣的:

#upcount 

import pygame, sys 
from pygame.locals import * 

pygame.init() 

size = width, height = 200, 200 

screen = pygame.display.set_mode(size) 
font = pygame.font.SysFont('arial', 20) 

increase_event = pygame.USEREVENT + 1 
number_change_time = 1000 # 1 second 

def main(): 
    pygame.time.set_timer(increase_event, number_change_time) 
    global dodged 
    dodged = 0 

    while True: 
     event_loop() 
     update() 

def event_loop(): 

    global dodged 
    events = pygame.event.get() 

    for event in events: 
     if event.type == pygame.QUIT: 
      sys.exit() 

     if event.type == pygame.KEYDOWN: 
      pygame.time.set_timer(increase_event, 0) # stop the timer on keypress 

     if event.type == increase_event: 
      dodged += 1 

def update(): 
    global dodged 
    screen.fill((0,0,0)) 
    numstr = str(dodged) 
    mytext = font.render(numstr, True, (255,255,0)) 
    mytext = mytext.convert_alpha() 
    screen.blit(mytext, (20, 30)) 

    pygame.display.flip() 

if __name__=="__main__": 
    main()