【问题标题】:pressing two keys are giving me a bug [duplicate]按两个键给我一个错误[重复]
【发布时间】:2021-11-18 09:48:20
【问题描述】:

我一直在尝试修复这个错误,即当您同时按下两个按钮并真实化其中一个按钮时,pygame 中的角色不会移动到按下的按钮。

def tank_control(event):
    if event.type == KEYDOWN:
        if event.key == K_UP:
            tanks_list[0].accelerate()
        elif event.key == K_DOWN:
            tanks_list[0].decelerate()
        elif event.key == K_LEFT:
            tanks_list[0].turn_left()
        elif event.key == K_RIGHT:
            tanks_list[0].turn_right()
    elif event.type == KEYUP: 
        if event.key == K_DOWN or event.key == K_UP:
            tanks_list[0].stop_moving()
        if event.key == K_LEFT or event.key == K_RIGHT:
            tanks_list[0].stop_turning()

【问题讨论】:

    标签: python pygame key


    【解决方案1】:

    您可以尝试使用两个单独的 if 块,而不是所有 elif。这样您既可以加速又可以转弯。

    def tank_control(event):
        if event.type == KEYDOWN:
            if event.key == K_UP:
                tanks_list[0].accelerate()
            elif event.key == K_DOWN:
                tanks_list[0].decelerate()
            if event.key == K_LEFT:
                tanks_list[0].turn_left()
            elif event.key == K_RIGHT:
                tanks_list[0].turn_right()
        elif event.type == KEYUP: 
            if event.key == K_DOWN or event.key == K_UP:
                tanks_list[0].stop_moving()
            if event.key == K_LEFT or event.key == K_RIGHT:
                tanks_list[0].stop_turning()
    

    【讨论】:

    • 如果我同时按下左键和右键然后释放其中一个键仍然不起作用,角色只是停止移动而不是转向按下的键。
    • 好吧,它确实有效,只是你有一个额外的问题。那是因为如果你得到一个 KEYUP 事件,就会调用 .stop_moving() 函数。您还应该将它们拆分为左右按钮。 .stop_turning_left() / .stop_turning_right() 之类的东西
    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2021-07-30
    • 2017-01-18
    相关资源
    最近更新 更多