常量键输入可以不断移动精灵吗?

use*_*990 1 python pygame sprite game-engine

如果我想根据pygame中的键输入移动一个精灵,那么无论如何都要编写代码,所以如果我按下一个键,精灵会继续向那个方向移动,直到我释放密钥?我试过这个,程序崩溃或者我必须反复点击键才能将sprite移动到预期的方向.

nin*_*key 5

OP想要关键状态轮询,而不是KEYDOWN事件.

此示例显示使用键事件和键轮询.你使用一个用于'按键按下'而另一个用于'按住'.

import pygame
from pygame.locals import *

done = False    
player.pos = Rect(0,0,10,10)

while not done:
    for event in pygame.event.get():
        # any other key event input
        if event.type == QUIT:
            done = True        
        elif event.type == KEYDOWN:
            if event.key == K_ESC:
                done = True

    # get key current state
    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        player.pos.left -= 10
    if keys[K_RIGHT]:
        player.pos.left += 10
    if keys[K_UP]:
        player.pos.top -= 10
    if keys[K_DOWN]:
        player.pos.left += 10
    if keys[K_SPACE]: 
        print 'firing gun'
Run Code Online (Sandbox Code Playgroud)