pygame我可以移动我的角色,但不会太大

2024-09-30 22:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用pygame制作一个游戏,但当我改变方向时,我会停止并再次按下箭头键。这看起来不是什么大问题,但很容易让人讨厌

这是代码(它写在游戏的循环中,所以这不是问题):

if event.type == pygame.KEYDOWN:
    if event.key == K_LEFT:
        coordsX = coordsX - 0.1

    elif event.key == K_RIGHT:
        coordsX = coordsX + 0.1

    elif event.key == K_UP:
        coordsY = coordsY - 0.1

    elif event.key == K_DOWN:
        coordsY = coordsY + 0.1

    elif event.key == K_LEFT and event.key == K_UP:
        coordsX = coordsX - 0.1
        coordsY = coordsY - 0.1

    elif event.key == K_LEFT and event.key == K_DOWN:
        coordsX = coordsX - 0.1
        coordsY = coordsY + 0.1

    elif event.key == K_RIGHT and event.key == K_UP:
        coordsX = coordsX + 0.1
        coordsY = coordsY - 0.1

    elif event.key == K_RIGHT and event.key == K_DOWN:
        coordsX = coordsX + 0.1
        coordsY = coordsY + 0.1

Tags: andkeyrightevent游戏ifleftpygame
2条回答

我在上述评论中所指的一个例子:

if event.type == pygame.KEYDOWN:
    if event.key == K_LEFT:
        moving_left = True
    elif event.key == K_RIGHT:
        moving_right = True
    elif ....

elif event.type == pygame.KEYUP:
    if event.key == K_LEFT:
        moving_left = False
    elif event.key == K_RIGHT:
        moving_right = False
    elif ....

if moving_left:
    coordsX = coordsX - 0.1
if moving_right:
    coordsX = coordsX + 0.1
if ...

对于这种情况,您可能不关心按键的时间或顺序,但您确实想知道按下了哪些键。因此,您可能想看看pygame.key.get_pressed

主循环看起来更像这样

pygame.event.pump()
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
    coordsX -= 0.1
if keys[K_RIGHT]:
    coordsX += 0.1
...

此外,在此处跳过使用elif,条件将自行解决

相关问题 更多 >