【问题标题】:How to make keyboard inputs into a function to reduce clutter如何将键盘输入变成函数以减少混乱
【发布时间】:2021-03-30 20:51:31
【问题描述】:

这是一个完全出于组织目的的问题,但在 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 中工作,但是字符没有移动。任何帮助将不胜感激!

【问题讨论】:

    标签: python pygame pycharm keyboard


    【解决方案1】:

    您需要将事件作为参数传递给函数。变量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)
    
        # [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多