如果我在游戏中连续按两次键,我想让角色跑得更快

这是我编写的代码的一部分。


enter code here

    import pygame

    from pygame.locals import QUIT, KEYDOWN, KEYUP,\

        K_LEFT, K_RIGHT, K_DOWN, K_SPACE, K_UP

    pygame.init()

    pygame.key.set_repeat(30, 30)

    while True:

        to_x1 = 0

        for event in pygame.event.get():

                if event.type == pygame.QUIT:

                    pygame.quit()

                    sys.quit()

                keys = pygame.key.get_pressed()

                if keys[pygame.K_LEFT]:

                    to_x1 = -5

                if keys[pygame.K_RIGHT]:

                    to_x1 = 5

        CHARIC_1.xpos1 = CHARIC_1.xpos1 + to_x1

CHARIC_1.xpos1 是角色的 x 坐标。当我快速按下左右键两次时,我想让我的角色跑得更快。我不知道我的一生。如果你知道怎么做的话,我希望你能告诉我。


largeQ
浏览 91回答 1
1回答

牛魔王的故事

您必须使用键盘事件KEYDOWN(请参阅pygame.event)而不是pygame.key.get_pressed()。用于获取自调用pygame.time.get_ticks()以来的毫秒数。pygame.init()存储按下按键的时间。如果在一定时间内按下按钮两次,则增加速度:key_time = 0fast_key_time = 500 # 0.5 secondswhile True:    current_time = pygame.time.get_ticks()    # [...]    for event in pygame.event.get():        # [...]        if event.type == pygame.KEYDOWN:            if event.key == pygame.K_LEFT:                if to_x1 == -5 and current_time < key_time + fast_key_time:                    to_x1 = -10                else:                    to_x1 = -5                key_time = current_time            if event.key == pygame.K_RIGHT:                if to_x1 == 5 and current_time < key_time + fast_key_time:                    to_x1 = 10                else:                    to_x1 = 5                key_time = current_time    CHARIC_1.xpos1 = CHARIC_1.xpos1 + to_x1    # [...]最小的例子:import pygamepygame.init()window = pygame.display.set_mode((500, 500))clock = pygame.time.Clock()rect = pygame.Rect(0, 0, 20, 20)rect.center = window.get_rect().centerto_x1 = 0key_time = 0fast_key_time = 500 # 0.5 secondsrun = Truewhile run:    current_time = pygame.time.get_ticks()    clock.tick(60)    for event in pygame.event.get():        if event.type == pygame.QUIT:            run = False        if event.type == pygame.KEYDOWN:            if event.key == pygame.K_LEFT:                if to_x1 == -5 and current_time < key_time + fast_key_time:                    to_x1 = -10                else:                    to_x1 = -5                key_time = current_time            if event.key == pygame.K_RIGHT:                if to_x1 == 5 and current_time < key_time + fast_key_time:                    to_x1 = 10                else:                    to_x1 = 5                key_time = current_time    rect.x += to_x1            rect.centerx = rect.centerx % window.get_width()    rect.centery = rect.centery % window.get_height()    window.fill(0)    pygame.draw.rect(window, (255, 0, 0), rect)    pygame.display.flip()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python