Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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_Python 2.7_Pygame - Fatal编程技术网

Python 我如何使一个游戏对象在按下键的情况下持续移动?

Python 我如何使一个游戏对象在按下键的情况下持续移动?,python,python-2.7,pygame,Python,Python 2.7,Pygame,只要按下键盘上的键,我就试图让游戏对象(这里是欢迎文本)移动。但在我的这段代码中 import pygame , sys from pygame.locals import * pygame.init() WHITE = (255 , 255 , 255) RED = (255 , 0 , 0) DISPLAYSURF = pygame.display.set_mode((800 , 400)) pygame.display.set_caption('Welcome Tanks')

只要按下键盘上的
,我就试图让游戏
对象
(这里是欢迎文本)移动。但在我的这段代码中

import pygame , sys
from pygame.locals import *

pygame.init()

WHITE = (255 , 255 , 255)
RED   = (255 , 0 , 0)

DISPLAYSURF = pygame.display.set_mode((800 , 400))
pygame.display.set_caption('Welcome Tanks')

#render(text, antialias, color, background=None)
fontObj = pygame.font.SysFont('serif' , 40)
text = fontObj.render('Welcome Folks' , True , RED )

x = 150
y = 29

while True:
    DISPLAYSURF.fill(WHITE)
    DISPLAYSURF.blit(text ,(x , y))   
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit(0)
        elif event.type == KEYDOWN or event.type == KEYUP:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit(0)
            elif event.key == K_DOWN:               
                y += 15
            elif event.key == K_UP:
                y -= 15
            elif event.key == K_RIGHT:
                x += 14
            elif event.key == K_LEFT:
                x -= 15
            else:
                x = 150
                y = 29
    pygame.display.update()
即使长时间连续按下
键,对象也只移动一次。换句话说,当按下键盘按钮时,对象仅改变其位置一次。我想让它在我握着钥匙的同时不停地移动


我应该查找哪个事件而不是
event.KEYDOWN

我建议您使用

while True:
    DISPLAYSURF.fill(WHITE)
    DISPLAYSURF.blit(text ,(x , y))   
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit(0)
        elif event.type == KEYDOWN or event.type == KEYUP:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit(0)

    if  pygame.key.get_pressed()[K_LEFT]:
        x -= 15

    if  pygame.key.get_pressed()[K_RIGHT]:
        x += 14

    if  pygame.key.get_pressed()[K_UP]:
        y -= 15

    if  pygame.key.get_pressed()[K_DOWN]:
        y += 15
    pygame.display.update()
pygame.key.按下()

返回一个布尔值序列,表示每个 按键盘上的键。使用键常量值为数组编制索引。A. 真值表示该按钮被按下

使用此功能获取按钮列表不是唯一的选择 处理用户输入文本的正确方法。你没办法知道 按键顺序,快速按键即可完成 两次调用pygame.key.get_pressed()时未被注意到。还有 无法将这些按下的键转换为完全转换的键 字符值。有关详细信息,请参阅事件队列上的pygame.KEYDOWN事件 这个功能

你也可以看看

声明该值,然后使用keystate:

 if KeyState()[K_DOWN]:
         y += 15
你可以试试:

if key.get_pressed()
    down = True

while down = True:
    y+= 15

然后获取
FPS
时钟,这样它就不会在
屏幕上流动了

谢谢兄弟!!但是你能给我解释一下get_pressed()函数吗?它还告诉我key变量没有定义。试试这个
来自pygame.locals import*
,或者
pygame.key.get_pressed()
哦,是的!!我现在什么都明白了。谢谢你,巴德!不客气:)检查de文档,它非常清晰和有用
if key.get_pressed()
    down = True

while down = True:
    y+= 15