为什么我的event.type==pygame.K_不起作用?

2 投票
2 回答
1868 浏览
提问于 2025-04-28 08:43

请记住,在这段代码之前还有更多的代码和其他相关的导入,但这些和我的问题无关。

我想知道为什么我的 event.type==pygame.K_RIGHT 这个命令没有效果。当我运行代码时,没有错误提示,但玩家无法移动。

pygame.mouse.set_cursor(*pygame.cursors.diamond)

movex, movey = 0,0

while gameLoop:


 for event in pygame.event.get():

    if (event.type==pygame.QUIT):

        gameLoop=False

    if (event.type==pygame.KEYDOWN):

        if (event.type==pygame.K_d):

            movex=5

        elif (event.type==pygame.K_a) :

            movex=-5

    if (event.type==pygame.KEYUP):

        if (event.type==pygame.K_RIGHT):

            movex=0

        elif (event.type==pygame.K_LEFT) :

            movex=0

window.fill (blue)
player.render(window)

player.x+=movex

clock.tick(60) 
pygame.display.flip()

pygame.quit()

暂无标签

2 个回答

0
if (event.type==pygame.K_RIGHT):
  movex=0

你把movex设成了0,所以角色就不动了。你需要改一下,把它改成movex = 1。

2

一旦检测到 KEYDOWN(按键按下)或 KEYUP(按键抬起)事件,你需要查看 event.key 这个属性,而不是 event.type,这样才能知道是哪个键被按下了。可以这样做:

for event in pygame.event.get():

    # The KEYDOWN event was posted
    if event.type == pygame.KEYDOWN:

        # The down arrow key was pressed
        # Note the key attribute is being checked rather than type
        if event.key == pygame.KEY_DOWN:
            # do something

        # The right arrow key was pressed
        elif event.key == pygame.K_RIGHT:
            # do something else

撰写回答