如何让屏幕等待用户输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让屏幕等待用户输入相关的知识,希望对你有一定的参考价值。

在创建我的游戏时,我遇到了这个我认为在测试播放时我已经摆脱的错误,但是当我不断尝试修复它时,它使代码无效。救命!

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循环检查键,直到你改变run_mestage2

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()

当然,它仍然可能无法正常使用其他代码。

以上是关于如何让屏幕等待用户输入的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Leanback 的详细信息片段不占用整个屏幕?

jQuery 对话框在屏幕上闪烁而不是等待用户输入

如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?

VSCode 如何操作用户自定义代码片段(快捷键)

在java一个方法中,如何让一行代码执行完毕以后等待几秒钟后再执行另一行代码 主要 是一个方法中

viewpager 中的 3 个 android 片段,如何让它们全部存活?