首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python - Pygame -学习get_pressed

Python - Pygame -学习get_pressed
EN

Stack Overflow用户
提问于 2013-01-07 11:31:00
回答 1查看 181关注 0票数 0

我正在学习python和pygame。我正在努力寻找我的代码中的问题。当我按住一个键的同时按下另一个键,然后以我按下的相同顺序松开它们,有时会使我的小角色向相反的方向移动。

下面是我正在苦苦挣扎的代码:

代码语言:javascript
运行
复制
while running:
for event in pygame.event.get():
    if event.type == KEYDOWN:
        keystate = pygame.key.get_pressed()
    if event.type == pygame.QUIT: # if user clicked close
        running = False # flag done to exit this loop


# all game logic / controls should go below this comment
    elif event.type == KEYDOWN:
        if keystate[K_SPACE]:
            print ('pressed space')
            player.move_up = True
        elif keystate[K_RIGHT]:
            print ('pressed right')
            player.move_right = True
        elif keystate[K_LEFT]:
            print ('pressed left')
            player.move_left = True
    elif event.type == KEYUP:
        if keystate[K_SPACE]:
            print ('released space')
            player.move_up = False
        elif keystate[K_RIGHT]:
            print ('released right')
            player.move_right = False
        elif keystate[K_LEFT]:
            print ('released left')
            player.move_left = False


if player.move_up:
    player.pos[1] -= 3
if player.move_up == False:
    if player.pos[1] < ground_level:
        player.pos[1] +=3
if player.move_right:
    player.pos[0] += 5
if player.move_left:
    player.pos[0] -= 5`

到目前为止,我没有任何实际的物理知识,而他只是到处飞来飞去。但这没关系,我只是想解决我已经有的问题。

EN

回答 1

Stack Overflow用户

发布于 2013-01-07 14:53:46

您永远不会在KEYUP事件上更新keystate的值,因此,它仍然具有上次触发KEYDOWN事件时的值。

要修复此问题,请更改此设置...

代码语言:javascript
运行
复制
if event.type == KEYDOWN:
    keystate = pygame.key.get_pressed()

要这样做:

代码语言:javascript
运行
复制
if event.type in (KEYDOWN, KEYUP):
    keystate = pygame.key.get_pressed()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14189488

复制
相关文章

相似问题

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