我正在尝试创建一个函数,如果按下某个键,则会更改变量。这将被放入一个在屏幕上移动精灵的类中。释放密钥时,while循环被打破。然而,没有任何反应。 while循环正在运行,我没有错误。有谁知道为什么会发生这种情况?我不确定我是否正确使用模块'pygame.key.get_pressed()'。
import pygame
from pygame.locals import *
def move():
for event in pygame.event.get():
if event.type == QUIT:
pygame.QUIT()
sys.exit()
while True:
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]:
print("something happens")
#runs this, but when up arrow key is pressed does nothing
if event.type == KEYUP:
False
screen = pygame.display.set_mode((512,384))
move()
pygame.display.update()
答案 0 :(得分:1)
你可以做到 `
def move():
for event in pygame.event.get():
if event.type == QUIT:
pygame.QUIT()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
print("up pressed")
# etc.
if event.type == pygame.KEYUP:
if event.key == pygame.K_UP:
print("up released")
# etc.
` 有关更多关键名称,您可以转到pygame key docs
答案 1 :(得分:1)
get_pressed()
返回列表,其中包含有关按下的键的信息,但此列表由pygame.event.get()
和其他事件函数更新,因此您必须始终执行pygame.event.get()
。这就是我们在while-loop
import pygame
pygame.init()
screen = pygame.display.set_mode((512,384))
while True:
# get events and (somewhere in background) update list
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# get current list.
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]:
print("UP")