Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让屏幕等待用户输入_Python_Pygame - Fatal编程技术网

Python 如何让屏幕等待用户输入

Python 如何让屏幕等待用户输入,python,pygame,Python,Pygame,在创建我的游戏时,我遇到了这个bug,我认为我在测试游戏时已经摆脱了它,但是当我一直试图修复它时,它使代码无法工作。救命啊 if stage2 == 1: screen.fill(black) pygame.display.flip() time.sleep(1) screen.fill(blue) pygame.display.flip() time.sleep(0.25) screen.fill(black) pygame.di

在创建我的游戏时,我遇到了这个bug,我认为我在测试游戏时已经摆脱了它,但是当我一直试图修复它时,它使代码无法工作。救命啊

if stage2 == 1:
    screen.fill(black)
    pygame.display.flip()
    time.sleep(1)
    screen.fill(blue)
    pygame.display.flip()
    time.sleep(0.25)
    screen.fill(black)
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run_me = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                screen.fill(red)
                stage2 = stage2 + 1
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                screen.fill(white)
                stage2 = stage2 + 1
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                screen.fill(blue)
                stage3 = stage3 + 1
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_DOWN:
                screen.fill(green)
                stage2 = stage2 + 1
顺便说一句,颜色和其他所有东西的代码都在代码的前面,但是我们可以说您可以看到它


当我运行此代码时,屏幕一直闪烁蓝色,救命

我不知道您想做什么,但我会使用
while
循环检查键,直到您更改
运行我
阶段2

if stage2 == 1:

    screen.fill(black)
    pygame.display.flip()

    time.sleep(1)

    screen.fill(blue)
    pygame.display.flip()

    time.sleep(0.25)

    screen.fill(black)
    pygame.display.flip()

    while run_me and stage2 == 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run_me = False
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    screen.fill(red)
                    stage2 = stage2 + 1
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    screen.fill(white)
                    stage2 = stage2 + 1
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_UP:
                    screen.fill(blue)
                    stage3 = stage3 + 1
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_DOWN:
                    screen.fill(green)
                    stage2 = stage2 + 1
它可能不适用于其余的代码,但您没有显示其余的代码

当您使用
sleep()
时,它不会检查键,因此您可能需要重新考虑代码并使用不同的东西。即

def wait(time)

    quit = False
    key = None

    current_time = pygame.time.get_ticks()
    end_time = current_time + time*1000

    while end_time > current_time and not key and not quit:

        clock.ticks(25)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                quit = True
            elif event.type == pygame.KEYDOWN:
                key = event.key

        current_time = pygame.time.get_ticks()

    return quit, key


if stage2 == 1:

    screen.fill(black)
    pygame.display.flip()

    quit, key = wait(1)
    if quit:
        run_me = False
    # - or -
    #run_me = not quit

    screen.fill(blue)
    pygame.display.flip()

    quit, key = wait(0.25)
    if quit:
        run_me = False
    # - or -
    #run_me = not quit

    screen.fill(black)
    pygame.display.flip()

当然,它可能仍然不能像您预期的那样与其余代码一起工作。

请查看并提供一个。使用
while True
循环检查事件。并使用
pygame.time
而不是
sleep
来控制对象参见示例