微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将键盘输入变成函数以减少混乱

如何解决如何将键盘输入变成函数以减少混乱

这是一个仅用于组织目的的问题,但在 pygame 中,是否可以将键盘输入放入函数中。我正在使用 pycharm,从 pycharm 我正在使用 pygame。代码

 if event.type == pygame.KEYDOWN:
        print("Press")
        if event.key == pygame.K_LEFT:
            HomuraX_change = -0.5
        if event.key == pygame.K_RIGHT:
            HomuraX_change = 0.5
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            HomuraX_change = 0

在将其放入 while 循环之前,我尝试在函数中使用它。但由于某种原因这不起作用。

我把它放在一个函数里,比如

def movement():
    if event.type == pygame.KEYDOWN:
       print("Press")
       if event.key == pygame.K_LEFT:
           HomuraX_change = -0.5
       if event.key == pygame.K_RIGHT:
           HomuraX_change = 0.5
   if event.type == pygame.KEYUP:
           if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
           HomuraX_change = 0

我把它放在一个 while 循环中,用于我的角色运动。在 pygame 的终端中,第二行的“打印”正在运行,这表明它在 pycharm 中工作,但是字符没有移动。任何帮助将不胜感激!

解决方法

您需要将事件作为参数传递给函数。变量 HomuraX_change 需要声明为 global

def movement(event):
    global HomuraX_change 
    
    if event.type == pygame.KEYDOWN:
        print("Press")
        if event.key == pygame.K_LEFT:
            HomuraX_change = -0.5
        if event.key == pygame.K_RIGHT:
            HomuraX_change = 0.5
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            HomuraX_change = 0
run = True
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        movement(event)

    # [...]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。