Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当按下键时,如何使精灵移动_Python_Pygame - Fatal编程技术网

Python 当按下键时,如何使精灵移动

Python 当按下键时,如何使精灵移动,python,pygame,Python,Pygame,当前,每次按下一个键时,精灵仅移动1个像素。当按下左键或右键时,如何使管道工精灵不断移动 while running: setup_background() spriteimg = plumberright screen.blit(spriteimg,(x1, y1)) for event in pygame.event.get(): if event.type == pygame.QUIT: running = F

当前,每次按下一个键时,精灵仅移动1个像素。当按下左键或右键时,如何使管道工精灵不断移动

while running:
    setup_background()
    spriteimg = plumberright

    screen.blit(spriteimg,(x1, y1))

    for event in pygame.event.get():
         if event.type == pygame.QUIT:
             running = False
         elif event.type == pygame.KEYDOWN:
             if event.key == pygame.K_UP:
                 x1 = x1 + 0
                 y1 = y1 - 1
             elif event.key == pygame.K_DOWN:
                 x1 = x1 + 0
                 y1 = y1 + 1
             elif event.key == pygame.K_LEFT:
                 x1 = x1 -1
                 y1 = y1 + 0
             elif event.key == pygame.K_RIGHT:
                 x1 = x1 + 1
                 y1 = y1 + 0

    pygame.display.flip()
    clock.tick(120)
你可以用它来做

例如:

while running:
    keys = pygame.key.get_pressed()  #checking pressed keys
    if keys[pygame.K_UP]:
        y1 -= 1
    if keys[pygame.K_DOWN]:
        y1 += 1

使用这个伙伴,它会很好地工作,把它放在你的for循环中

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                playerX_change = -0.1
            if event.key == pygame.K_d:
                playerX_change = 0.1
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d:
                playerX_change = 0

    playerX += playerX_change
    player(playerX, playerY)
    pygame.display.update()
键盘事件(请参阅模块)仅在按键状态更改时发生一次。每次按键时,
KEYDOWN
事件发生一次
KEYUP
在每次释放钥匙时发生一次。将键盘事件用于单个操作或逐步移动

如果要实现连续移动,必须使用
pygame.key.get_pressed()
。返回包含每个键状态的列表。如果按下某个键,则该键的状态为
True
,否则为
False
。用于评估按钮的当前状态并获得连续移动:

运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
keys=pygame.key.get_pressed()
x1+=键[pygame.K_RIGHT]-键[pygame.K_LEFT]
y1+=键[pygame.K_DOWN]-键[pygame.K_UP]
x1=x1%窗口。获取宽度()
y1=y1%窗口。获取高度()
安装程序\u后台()
spriteimg=铅管灯
屏幕blit(spriteimg,(x1,y1))
pygame.display.flip()
时钟滴答(120)

另见

最简单的例子:

导入pygame
pygame.init()
window=pygame.display.set_模式((300300))
clock=pygame.time.clock()
rect=pygame.rect(0,0,20,20)
rect.center=window.get_rect().center
水平=5
运行=真
运行时:
时钟滴答(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
打印(pygame.key.name(event.key))
keys=pygame.key.get_pressed()
rect.x+=(键[pygame.K_RIGHT]-键[pygame.K_LEFT])*vel
rect.y+=(键[pygame.K_DOWN]-键[pygame.K_UP])*vel
rect.centerx=rect.centerx%窗口。获取宽度()
rect.centery=rect.centery%窗口。获取高度()
窗口填充(0)
pygame.draw.rect(窗口,(255,0,0),rect)
pygame.display.flip()
pygame.quit()
退出()