簡體   English   中英

如何在pygame中延遲按鍵操作?

[英]How to make a delay in a keypress in pygame?

我正在制作一個平台游戲,並制作一個簡單的重力版本,所以我需要這樣做,以便在2秒鍾左右的時間跳動(空格鍵)時重新打開重力。 基本上,“ ychange”每幀更改字符的y軸位置(如果ychange = 3,則每幀下降3個像素)。 始終將其設置為6,因此他每幀跌落6幀,直到他撞到有碰撞的物體為止,以使他的跳變設置為-6或-7,這使他每幀提高6或7像素。

我的問題是,我如何才能延遲從ychange = -6到ychange = 6的跳轉

例如:

跳躍時:ychange = -6延遲2-3秒ychange = 6

我顯然已經嘗試過time.sleep和pygame.time.wait,但是他們實際上暫停了程序,直到等待結束,這顯然是不好的。

跳轉的代碼是:

while not gameExit:
    for event in pygame.event.get(): # Binds
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                xchange -= 3
            if event.key == pygame.K_d:
                xchange += 3
            if event.key == pygame.K_SPACE: # SPACEBAR/JUMP
                ychange = -6
                time.sleep(2)
                ychange = 6
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d:
                xchange = 0

它們“如果event.key == pygame.K_SPACE”是跳轉部分,其余則是其他綁定。

這就是time.sleep命令的示例,該命令將暫停整個程序,直到延遲完成。

有任何想法嗎?

重述:

問題:延遲會暫停程序

嘗試過:time.sleep,pygame.time.wait

問題:如何獲得不會使整個程序暫停的延遲

使用pygame.time.get_ticks()獲取玩家按下空格的時間,然后將布爾標志設置為true。 然后將時間獲取一幀,直到從原始時間經過2秒為止,此時將ychange設置為6並將標志再次設置為false。

或者,如注釋之一所示查找線程。

偽代碼:

flag = False; # do this before the game loop starts

if event.type == pygame.KEYUP:
    # checking flag prevents resetting the timer
    if flag == False and event.key == pygame.K_w:
        starttime = pygame.time.get_ticks()
        ychange = -6
        flag = True

# wait 2000 milliseconds before executing this 
if flag == True and pygame.time.get_ticks() - starttime >= 2000:
    ychange = 6
    flag = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM