检测被点击的棋子

2.1 说明

想要实现检测出哪颗棋子被点击了,其大体逻辑如下

  1. 检测是否有鼠标点击事件
  2. 如果有鼠标点击,那么就将当前棋盘上的所有的棋子对象依次进行判断点击的鼠标位置是否是当前棋子的位置
  3. 如果某颗棋子检测出被点击了,那么就打印相关的信息以便让我们开发者知道

2.2 代码实现

    self.name = chess_name
    @staticmethod
    def get_clicked_chess(chessboard):
        """
        获取被点击的棋子
        """
        for chess in chessboard.get_chess():
            if pygame.mouse.get_pressed()[0] and chess.rect.collidepoint(pygame.mouse.get_pos()):
                print(chess.name + "被点击了")
                return chess

image-20210821183725999

    def get_chess(self):
        """获取所有的棋盘上的棋子对象列表"""
        return [chess for line in self.chessboard_map for chess in line if chess]

image-20210821184345908

            # 检查是否点击了棋子
            clicked_chess = Chess.get_clicked_chess(chessboard)

image-20210821184447539

2.3 运行效果

img

在运行的过程中,可以点击任意一颗棋子,只要被点击了那么在终端中就能看到信息

提示

  • 因为每次按下鼠标的时间长度不一样,这就导致在这个期间内事件检测while循环执行的次数就不一样,所以会出现这次鼠标点击终端显示了1次信息,可能下次就会显示2次、3次。。。等,这都是正常的现象
Copyright © itprojects.cn 2021 all right reserved,著作权归itprojects.cn所有,由王铭东编写该文件修订时间: 2021-08-21 20:37:32