在我的代码中,我希望在按键的同时移动对象,并在释放键时停止。然而,即使我按住这个键,它也只移动了一步。以下是示例代码。我已经打印了(x,y)值。有什么建议吗?谢谢。
x = 20
y = 20
def keydown(evt):
global x, y
if evt.type == pygame.KEYDOWN:
if(evt.key == pygame.K_RIGHT): x += 2.0
if(evt.key == pygame.K_LEFT): x -= 2.0
if(evt.key == pygame.K_UP): y += 2.0
if(evt.key == pygame.K_DOWN): y -= 2.0
if evt.type == pygame.KEYUP:
if(evt.key == pygame.K_RIGHT or evt.key == pygame.K_LEFT): x = x
if(evt.key == pygame.K_UP or evt.key == pygame.K_DOWN): y = y
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
print(x, y)
keydown(event)PS:我在这个论坛(How can I make a sprite move when key is held down)的某个地方尝试了一下,但是没有成功。
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]: x += 2.0
if keys[pygame.K_LEFT]: x -= 2.0
if keys[pygame.K_UP]: y += 2.0
if keys[pygame.K_DOWN]: y -= 2.0发布于 2014-12-06 03:14:46
x = 20
y = 20
def keydown(evt):
global x, y
if(evt[pygame.K_RIGHT]): x += 2.0
if(evt[pygame.K_LEFT]): x -= 2.0
if(evt[pygame.K_UP]): y += 2.0
if(evt[pygame.K_DOWN]): y -= 2.0
while True:
keys = pygame.key.get_pressed()
event = pygame.event.poll()
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
print(x, y)
keydown(keys)所以首先,你有一些代码,这些代码在你的keydown函数中从来没有做过任何事情
if evt.type == pygame.KEYUP:
if(evt.key == pygame.K_RIGHT or evt.key == pygame.K_LEFT): x = x
if(evt.key == pygame.K_UP or evt.key == pygame.K_DOWN): y = ypygame.key.get_press()返回一个将pygame.KEY_****映射到布尔值的字典。遍历它只会给你布尔值,这对你没有用处。相反,我编写的代码将通过连续按下所有键来工作,并根据是否按下某些键来更改X和Y。
https://stackoverflow.com/questions/27321664
复制相似问题