【问题标题】:pygame hold down lkey is delayed [duplicate]pygame按住lkey延迟[重复]
【发布时间】:2021-09-24 18:41:05
【问题描述】:

我是 pygame 的初学者,我没有任何编程经验, 我正在使用 pygame.key.get_pressed() :

import pygame, sys
from pygame.locals import *

pygame.init()
DISPLAYSURF = pygame.display.set_mode((400, 400))
pygame.display.set_caption('Hello World!')


green = (0,255,0)
FPS = 60
FpsClock = pygame.time.Clock()
playerY = 200
playerX = 200

while True:
    BG = pygame.draw.rect(DISPLAYSURF,(255, 255,255),(0,0,400,400))
    player = pygame.draw.rect(DISPLAYSURF,(green),(playerX, playerY,20, 20))
    keys = pygame.key.get_pressed()

    
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if keys[pygame.K_z]:
            playerY -= 5
        if keys[pygame.K_s]:
            playerY += 5
        if keys[pygame.K_d]:
            playerX += 5
        if keys[pygame.K_q]:
            playerX -= 5

    pygame.display.update(player)

    

    pygame.display.update()
    FpsClock.tick(FPS)

例如,当我在 s 键上单击一次时,一切正常,玩家移动,但是 如果我按住 s 按钮,在我按住按钮的同时玩家向下移动之前会有延迟 (w、a、d 也一样)

【问题讨论】:

    标签: python python-3.x pygame


    【解决方案1】:

    这是Indentation 的问题。您必须在应用程序循环而不是事件循环中评估按下的键:

    while True:
        BG = pygame.draw.rect(DISPLAYSURF,(255, 255,255),(0,0,400,400))
        player = pygame.draw.rect(DISPLAYSURF,(green),(playerX, playerY,20, 20))
        keys = pygame.key.get_pressed()
    
        
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
        
        # INDENTATION
        #<--|
        
        if keys[pygame.K_z]:
            playerY -= 5
        if keys[pygame.K_s]:
            playerY += 5
        if keys[pygame.K_d]:
            playerX += 5
        if keys[pygame.K_q]:
            playerX -= 5
    
        pygame.display.update(player)
        pygame.display.update()
        FpsClock.tick(FPS)
    

    pygame.key.get_pressed() 返回一个包含每个键状态的序列。如果按住某个键,则该键的状态为True,否则为False

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多