如何计算按键按下所用的时间。(Python)

如何计算按键按下所用的时间。(Python),python,pygame,elapsedtime,Python,Pygame,Elapsedtime,我想知道如果长时间按住某个键,如何增加一个变量。我正在使用Python和PyGame。 这是我的代码示例(速度、圈数和距离在前几行中定义): 我想知道如何使你按住空格键的时间越长,速度控制越高,最大速度控制为5,最好使用某种经过时间的东西。你可以使用函数返回程序开始计算经过时间后的时间。当用户按键时,将start\u time设置为事件循环中的当前时间,在while循环中,您可以检查它是否仍处于按下状态,并计算经过的时间 import pygame as pg def main():

我想知道如果长时间按住某个键,如何增加一个变量。我正在使用Python和PyGame。 这是我的代码示例(速度、圈数和距离在前几行中定义):

我想知道如何使你按住空格键的时间越长,速度控制越高,最大速度控制为5,最好使用某种经过时间的东西。

你可以使用函数返回程序开始计算经过时间后的时间。当用户按键时,将
start\u time
设置为事件循环中的当前时间,在while循环中,您可以检查它是否仍处于按下状态,并计算经过的时间

import pygame as pg


def main():
    screen = pg.display.set_mode((320, 240))
    clock = pg.time.Clock()
    start_time = 0

    done = False
    while not done:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                done = True
            elif event.type == pg.KEYDOWN:
                if event.key == pg.K_SPACE:
                    start_time = pg.time.get_ticks()

        keys = pg.key.get_pressed()
        if keys[pg.K_SPACE]:  # The spacebar is held.
            current_time = pg.time.get_ticks()
            elapsed_time = current_time-start_time  # milliseconds
            print(elapsed_time)

        screen.fill((30, 30, 30))
        pg.display.flip()
        clock.tick(30)


if __name__ == '__main__':
    pg.init()
    main()
    pg.quit()

如果只想计算帧数,请执行以下操作:

import pygame as pg


def main():
    screen = pg.display.set_mode((320, 240))
    clock = pg.time.Clock()
    counter = 0

    done = False
    while not done:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                done = True
            elif event.type == pg.KEYDOWN:
                if event.key == pg.K_SPACE:
                    counter = 0 # Set it back to 0.

        keys = pg.key.get_pressed()
        if keys[pg.K_SPACE]:  # The spacebar is held.
            # Increment the counter every frame.
            counter += 1
            print(counter)

        screen.fill((30, 30, 30))
        pg.display.flip()
        clock.tick(30)


if __name__ == '__main__':
    pg.init()
    main()
    pg.quit()

谢谢你。当我按住空格键测试程序时,我注意到数字跳过了一些,你为什么要这样做?按住空格键越长,你就越想给汽车增加加速度我想你应该发布另一个问题,比如“如何加速一个对象?”。并添加一个简短的目标描述和代码示例,向我们展示您的尝试。我已经得到了答案,您只需发布问题即可。;)您知道vectors和pygame sprites是如何工作的吗?请用@skrx写一条评论,向我发送通知。
import pygame as pg


def main():
    screen = pg.display.set_mode((320, 240))
    clock = pg.time.Clock()
    counter = 0

    done = False
    while not done:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                done = True
            elif event.type == pg.KEYDOWN:
                if event.key == pg.K_SPACE:
                    counter = 0 # Set it back to 0.

        keys = pg.key.get_pressed()
        if keys[pg.K_SPACE]:  # The spacebar is held.
            # Increment the counter every frame.
            counter += 1
            print(counter)

        screen.fill((30, 30, 30))
        pg.display.flip()
        clock.tick(30)


if __name__ == '__main__':
    pg.init()
    main()
    pg.quit()