我正在使用 pygame 开发节奏游戏,并且我一直致力于同时获得键盘输入。
当在游戏中按下按键时,应该在屏幕上看到键光束。
但是,如果我同时按下多个键,光束不会立即出现。它们滞后并单独出现。
我该怎么做才能解决这个问题?
我的代码:
import pygame
pygame.init()
WIDTH = 1280
HEIGHT = 720
FPS = 60
SCREEN = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Rhythmetric')
pygame.event.set_allowed([pygame.QUIT, pygame.KEYDOWN, pygame.KEYUP, pygame.MOUSEBUTTONDOWN])
clock = pygame.time.Clock()
pink_keybeam = pygame.image.load('img/pink_keybeam.png').convert_alpha()
is_running = True
while is_running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
is_running = False
SCREEN.fill((0, 0, 0))
if pygame.key.get_pressed()[pygame.K_d]:
SCREEN.blit(pink_keybeam, (440, 0))
if pygame.key.get_pressed()[pygame.K_f]:
SCREEN.blit(pink_keybeam, (540, 0))
if pygame.key.get_pressed()[pygame.K_j]:
SCREEN.blit(pink_keybeam, (640, 0))
if pygame.key.get_pressed()[pygame.K_k]:
SCREEN.blit(pink_keybeam, (740, 0))
pygame.display.update()
clock.tick(FPS)
pygame.quit()
根据一些 pygame 文档示例,他们声明了一个
main
函数来运行游戏循环。
您的问题的可能解决方案可能如下所示:
import os
import pygame
MAIN_DIR = os.path.split(os.path.abspath(__file__))[0]
WIDTH = 1280
HEIGHT = 720
FPS = 60
def load_image(name):
path = os.path.join(MAIN_DIR, "img", name)
return pygame.image.load(path).convert_alpha()
def main():
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Rhythmetric')
pygame.event.set_allowed([pygame.QUIT, pygame.KEYDOWN, pygame.KEYUP, pygame.MOUSEBUTTONDOWN])
clock = pygame.time.Clock()
pink_keybeam = load_image("pink_keybeam.png")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
screen.fill((0, 0, 0))
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
screen.blit(pink_keybeam, (440, 0))
if keys[pygame.K_f]:
screen.blit(pink_keybeam, (540, 0))
if keys[pygame.K_j]:
screen.blit(pink_keybeam, (640, 0))
if keys[pygame.K_k]:
screen.blit(pink_keybeam, (740, 0))
clock.tick(FPS)
pygame.display.update()
if __name__ == '__main__':
main()
pygame.quit()
我测试了这段代码,它运行良好,您可以在下面的屏幕截图中看到:
最后,我建议您检查是否根据您的操作系统安装了 pygame 的系统依赖项。您可以在此处找到更多相关信息。