修复的大体逻辑

  1. 棋子在移动到新位置后,需要将之前“可落子对象”全部清除
  2. 还需要将“标记点击棋子对象”也清除
  3. 既然本次事件处理是完成落子功能,那么在实现功能后就需要通过break退出,否则在鼠标位置不变的情况下会认为你又点击了新位置的棋子,会再次出现这个bug

4.2 代码实现

    @classmethod
    def clean(cls):
        """
        清理上次的对象
        """
        cls.singleton = None

image-20210821194612783

# 清理「点击对象」、「可落子位置对象」
Dot.clean_last_position()
ClickBox.clean()
# 退出for,以便不让本次的鼠标点击串联到点击棋子
break

image-20210821194729678

4.3 运行效果

落子之前

img

落子之后

img

Copyright © itprojects.cn 2021 all right reserved,著作权归itprojects.cn所有,由王铭东编写该文件修订时间: 2021-08-21 20:36:10