避免 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'。
一种可能性是,您有一个类似“鼠标按钮弹起”和另一个“鼠标按钮按下”的事件,而不是一个事件“单击”。
像这样,如果你想要的话,你也许可以构建类似拖放的东西。
我在游戏中有一个算法,简化后看起来像这样:
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'。
一种可能性是,您有一个类似“鼠标按钮弹起”和另一个“鼠标按钮按下”的事件,而不是一个事件“单击”。 像这样,如果你想要的话,你也许可以构建类似拖放的东西。