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