避免 if 语句之间的交互

Avoiding interaction between if statements

我在游戏中有一个算法,简化后看起来像这样:

if click:
    if a and not b and not c:
        b = True
        c = True
        follow_mouse_pos()

    if b and c:
        b = False
        c = False
        stay_on_slot()

这是一个库存系统,第一个 if 语句从点击的槽中拾取一个项目,另一个将它放在点击的槽中。 我遇到的问题是我想对两个操作使用相同的鼠标按钮,但如果我这样做,该项目只会在插槽和鼠标位置之间闪烁。

a, b, c 是我设置的条件,用来决定是拿起物品还是把它放入槽中。

a 在这里无关紧要,因为它仅用于视觉效果。 如果鼠标持有一个项目,则 b 为 True 如果单击的插槽为空,则 c 为 True

问题是满足其中一个语句的要求会导致满足另一个语句的条件,并且它会像主循环一样快地循环。这是一个问题,因为每次我想移动库存中的东西时我都必须计时,这并不好。

我试过 if elif 语句,但由于这是在一个循环中,唯一的区别是在每个循环中只会检查其中一个,但总是会满足其中一个。

有什么办法可以避免这个问题吗?

完整项目在github

包含这部分代码的文件在这里: VoidShips/scripts/GUI/gui.py 第 203 行

只使用 if...elif,所以如果 'if' 条件检查它不会继续检查 'elif'。

一种可能性是,您有一个类似“鼠标按钮弹起”和另一个“鼠标按钮按下”的事件,而不是一个事件“单击”。 像这样,如果你想要的话,你也许可以构建类似拖放的东西。