2013-12-14 3 views
0

Вот какой код пигмейка он отлично работает, кроме как переместить спрайт, я должен многократно нажимать клавиши со стрелками, есть ли способ сделать спрайт перемещаться, удерживая клавиши со стрелками? Ниже мой код:Sprite lagging in pygame

while True: #main game loop 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == KEYUP: 
      if event.key == K_RIGHT: 
       LionCubX+= 10 
      elif event.key == K_LEFT: 
       LionCubX-= 10 
      elif event.key == K_UP: 
       LionCubY-= 10 
      elif event.key == K_DOWN: 
       LionCubY+= 10 
     DISPLAYSURF.fill(GREEN) 
     DISPLAYSURF.blit(LionCubImg,(LionCubX,LionCubY)) 
    pygame.display.update() 
+0

Я не знаю много о pygame, но проблема в том, что вы используете 'KEYUP', что означает, что вы должны освободить ключ, чтобы вызвать движение. – Aleph

ответ

0

Проблема, которую я вижу в том, что вы проверить наличие событий типа KEYUP. Это означает, что ваш код запускается только после отпускания ключа. Меняет

elif event.type == KEYUP: 

в

elif event.type == KEYDOWN: 

Другой возможностью будет то, что вы не установили ключ повторения:

pygame.key.set_repeat(1, 30) 

Поместите это перед вашим основным циклом игры, чтобы активировать повтор нажатия. Также см. the docs.

0

Проблема в том, что вы двигая спрайт только тогда, когда ключ был подавлен и выпущен KEYUP. Вам нужно переместить спрайт в состояние ключа KEYDOWN.

Изменить это:

elif event.type == KEYUP: 

To:

elif event.type == KEYDOWN: