如何在Pygame中为精灵添加“Rect”或“text”?

2024-10-02 18:25:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图重新创建一个slide puzzle,我需要打印到以前绘制的矩形精灵的文本。我是这样设置它们的:

class Tile(Entity):
    def __init__(self,x,y):
        self.image = pygame.Surface((TILE_SIZE-1,TILE_SIZE-1))
        self.image.fill(LIGHT_BLUE)
        self.rect = pygame.Rect(x,y,TILE_SIZE-1,TILE_SIZE-1)
        self.isSelected = False
        self.font = pygame.font.SysFont('comicsansms',22) # Font for the text is defined

我就是这样画出来的:

^{pr2}$

这是我尝试添加Rect的方法(当用鼠标单击它时):

# Main program loop
for tile in tile_list:
    screen.blit(tile.image,tile.rect)
    if tile.isInTile(pos):
        tile.isSelected = True
        pygame.draw.rect(tile.image,BLUE,[tile.rect.x,tile.rect.y,TILE_SIZE,TILE_SIZE],2)
    else:
        tile.isSelected = False

isInTile公司:

def isInTile(self,mouse_pos):
    if self.rect.collidepoint(mouse_pos): return True

我做错什么了?在


Tags: posrectimageselffalsesizedefblue
1条回答
网友
1楼 · 发布于 2024-10-02 18:25:05

Pygame中的坐标是相对于绘制的曲面。你现在画矩形的方式平铺.image使它吸引(瓷砖.rect.x,瓷砖.rect.y)相对于平铺.image. 大多数时候瓷砖.rect.x和瓷砖.rect.y将大于平铺宽度和高度,因此它将不可见。你可能想要的是pygame.draw.rect游戏(平铺.image,蓝色,[0,0,平铺尺寸,瓷砖尺寸],2)。这将在平铺上从平铺的左上角(0,0)到右下角(平铺大小,平铺大小)绘制一个矩形。在

文本也是如此。例如,如果TILE_SIZE为25,x为2,则文本所在的x坐标为blit on平铺.image是2*25+40=90。90比平铺.image(这是TILE_SIZE-1=24),因此它将绘制到曲面之外,使其不可见。如果要在左上角绘制文本平铺.image做,做平铺.image.blit(标签,[0,0])。在

相关问题 更多 >