首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使循环,直到在pygam键被按下

使循环,直到在pygam键被按下
EN

Stack Overflow用户
提问于 2014-12-06 01:39:57
回答 1查看 822关注 0票数 0

在我的代码中,我希望在按键的同时移动对象,并在释放键时停止。然而,即使我按住这个键,它也只移动了一步。以下是示例代码。我已经打印了(x,y)值。有什么建议吗?谢谢。

代码语言:javascript
复制
x = 20
y = 20

def keydown(evt):
        global x, y
        if evt.type == pygame.KEYDOWN:
                if(evt.key == pygame.K_RIGHT): x += 2.0
                if(evt.key == pygame.K_LEFT): x -= 2.0
                if(evt.key == pygame.K_UP): y += 2.0
                if(evt.key == pygame.K_DOWN): y -= 2.0
        if evt.type == pygame.KEYUP:
                if(evt.key == pygame.K_RIGHT or evt.key == pygame.K_LEFT): x = x
                if(evt.key == pygame.K_UP or evt.key == pygame.K_DOWN): y = y


while True:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        pygame.quit()
                        sys.exit()

                print(x, y)
                keydown(event)

PS:我在这个论坛(How can I make a sprite move when key is held down)的某个地方尝试了一下,但是没有成功。

代码语言:javascript
复制
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]: x += 2.0
if keys[pygame.K_LEFT]: x -= 2.0
if keys[pygame.K_UP]: y += 2.0
if keys[pygame.K_DOWN]: y -= 2.0
EN

回答 1

Stack Overflow用户

发布于 2014-12-06 03:14:46

代码语言:javascript
复制
x = 20
y = 20

def keydown(evt):
        global x, y
        if(evt[pygame.K_RIGHT]): x += 2.0
        if(evt[pygame.K_LEFT]): x -= 2.0
        if(evt[pygame.K_UP]): y += 2.0
        if(evt[pygame.K_DOWN]): y -= 2.0


while True:
        keys = pygame.key.get_pressed()
        event = pygame.event.poll()
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        print(x, y)
        keydown(keys)

所以首先,你有一些代码,这些代码在你的keydown函数中从来没有做过任何事情

代码语言:javascript
复制
if evt.type == pygame.KEYUP:
    if(evt.key == pygame.K_RIGHT or evt.key == pygame.K_LEFT): x = x
    if(evt.key == pygame.K_UP or evt.key == pygame.K_DOWN): y = y

pygame.key.get_press()返回一个将pygame.KEY_****映射到布尔值的字典。遍历它只会给你布尔值,这对你没有用处。相反,我编写的代码将通过连续按下所有键来工作,并根据是否按下某些键来更改X和Y。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27321664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档