簡體   English   中英

我的暫停語句不適用於 pygame 循環

[英]My pause statement is not working for pygame loop

我的collide_rect 函數沒有像我預期的那樣工作。 問題是當按“r”鍵時,它應該能夠重置所有內容並繼續游戲。 但是當我實際按下鍵 'r' 時,當我添加暫停語句時它不會改變任何東西。 當我擁有的兩個精靈(球,障礙物)碰撞時,我想讓游戲暫停。 在用戶輸入字母 'r' 后,它應該返回運行並重置兩個精靈的位置。 我得到的錯誤是當我按下 'r' 鍵時,它不會改變表面上的任何東西。

這是我的while循環:

paused = False

def display_text(text):
    font = pygame.freetype.Font('helvetica.ttc', 32)
    text_attributed = font.render_to(gameDisplay, (300,300), text, black)


while not crashed:
    time = pygame.time.get_ticks()
    obstacle.change_x()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                ball.jump_true()
            if event.key == pygame.K_SPACE:
                ball.jump_true()
            if event.key == pygame.K_r:
                paused = not paused



    if ball.collide == True:
        gameDisplay.fill(white)
        display_text('You Lost! type "R" to restart')
        paused = True


    if paused == True:
        ball.reset_position()
        obstacle.reset_position()
        pygame.display.flip()
        clock.tick(20)

    else:
        ball.jump()
        ball.test_collision(obstacle)
        gameDisplay.fill(white)
        ball.update()
        obstacle.update()
        pygame.display.flip()
        clock.tick(60)
pygame.quit()
sys.exit()

不要把事情復雜化。 您不需要多個事件循環。 使用 1 個主循環、1 個事件循環和一個指示游戲是否暫停的狀態。 例如:

paused = False
run = True
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_r

                # Toggle pause
                paused = not paused

    if paused:

        # "pause" mode
        # [...]

    else

        # "run" mode
        # [...]

    # update display etc.
    # [...]

暫無
暫無

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

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