从 pygame 界面检索图像

retrieving images from a pygame interface

我正在使用 pygame 构建屏幕来创建网格界面 (3*3),如下所示:

screen = pg.display.set_mode((width, height + 100), 0, 32) 

之后,我将图像粘贴到网格的 9 个可用点中的每一个,网格上的坐标为 posyposx 作为参数,如下所示:

screen.blit(img, (posy, posx))

有没有办法检索每个粘贴的图像?进一步处理图像的返回类型是什么?

编辑:你的意思是像这样存储状态?

class Cell : 
    image = ''
    posX = 0
    posY = 0

谢谢。

如果您想问是否:在 9 张图像被 blit() 编辑到 screen 之后,您可以稍后以某种方式询问 screen 哪些图像是 blit()ed到每个区域都是,然后没有。 screen 只是一堆由 blit() 设置为特定值的像素。它不知道这些值从何而来。

你必须自己追踪。我会建议创建一个单元格对象,其中它的 9 个实例构成您的网格,并将保留网格中 9 个区域中每个区域的状态,包括该区域的图像。您可能会发现 subclassing Sprite 很有用。

编辑:

例如,您可以为 Cell:

做这样的事情
class Cell():
    def __init__(self, pos, image, row, column):
        self.image = image
        self.rect = pygame.Rect(pos, image.get_size())
        self.row = row
        self.column = column

或者如果你以后想用它做更多的事情(我不会在这里包括),你可能想像这样子class Sprite

class Cell(pygame.sprite.Sprite):
    def __init__(self, pos, image, row, column):
        super().__init__()
        self.image = image
        self.rect = pygame.Rect(pos, image.get_size())
        self.row = row
        self.column = column

在任何一种情况下,您都可能会向 class 添加更多内容,但在第一个示例中,即使这种有限的方式也允许您将每个实例的所有状态信息保存在一起。仅使用 Class 和 __init__() 而没有其他方法有点像 C 中的结构,它允许您组织和构建数据。