标记点击的棋子

3.1 说明

如果棋子被点击了,仅仅是在终端中显示了信息,估计这没什么用处;想要告诉玩家刚刚它点击的棋子,应该是在游戏界面中加以标记,这样才能够知道点中了棋子,如果仅仅是在终端中显示估计玩家还以为没有点中呢

所以,在本节课程中我们将用另外一个凸显的图片显示在被点击的棋子周围,这样就能够知道点中了棋子

3.2 代码实现

class ClickBox(pygame.sprite.Sprite):
    """
    标记类
    """
    singleton = None

    def __new__(cls, *args, **kwargs):
        """通过重写此方法,实现单例"""
        if cls.singleton is None:
            cls.singleton = super().__new__(cls)
        return cls.singleton

    def __init__(self, screen, row, col):
        super().__init__()
        self.screen = screen
        self.image = pygame.image.load("images/r_box.png")
        self.rect = self.image.get_rect()
        self.rect.topleft = (50 + col * 57, 50 + row * 57)

    @classmethod
    def show(cls):
        if cls.singleton:
            cls.singleton.screen.blit(cls.singleton.image, cls.singleton.rect)

image-20210821184555031

self.row, self.col = row, col

image-20210821184659267

if clicked_chess:
    # 创建选中棋子对象
    ClickBox(screen, clicked_chess.row, clicked_chess.col)

image-20210821184741382

# 标记点击的棋子
ClickBox.show()

image-20210821184848989

3.3 运行效果

img

如上图看到的那样,当点击了"炮"这个棋子之后,会在它周围显示4个红色的点,这就是本节课程最后实现的功能

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