Pygame在绘制矩形时出现麻烦

时间:2019-06-13 20:08:59

标签: python pygame pygame-surface

因此,我随机生成一个“世界”,并使用pygame对其进行绘制。在我决定在已经绘制的内容之上添加一些内容之前,该部分效果很好。

代码如下。每件事都不重要,但是DISPLAY是我正在处理的表面,y.colour是3号元组,y.coord是(x,y)元组

for x in W_Map:
    for y in x:
        DISPLAY.fill(y.colour, pygame.Rect(y.coord[0]-tile_size, 
                                           y.coord[1]-tile_size, 
                                           y.coord[0]+tile_size, 
                                           y.coord[1]+tile_size))  

DISPLAY.fill(lime, pygame.Rect(300,300,310,310))

根据上面的游戏,这应该创建一个以305x305为中心的10x10正方形的石灰。但是,结果如下图所示:

This is the result

如您所见,代码的第一部分完美地绘制了地形,但是当在已经绘制的内容上创建石灰方块时,它会变得非常疯狂。整个功能是:

pygame.init()
DISPLAY = pygame.display.set_mode(
    (shape[0]*2*tile_size, shape[1]*2*tile_size))
DISPLAY.fill((0,0,0))
#Make and draw the Rects
for x in W_Map:
    for y in x:
        DISPLAY.fill(y.colour, pygame.Rect(y.coord[0]-tile_size, 
                                           y.coord[1]-tile_size, 
                                           y.coord[0]+tile_size, 
                                           y.coord[1]+tile_size))  

DISPLAY.fill(lime, pygame.Rect(300,300,310,310))

1 个答案:

答案 0 :(得分:2)

Pygame的Rect带有四个参数:x,y,宽度和高度,其中x和y相对于视口的左上角。您的石灰矩形是使用 with cte as ( select *, ROW_NUMBER() over (order by CITY) as nr from SAMPLE2 ) update SAMPLE s join cte c on s.ID = c.nr set s.NAME = c.NAME ,s.AGE = c.AGE ,s.SALARY = c.SALARY ,s.CITY = c.CITY; 创建的,表示宽度和高度为310像素,位置为pygame.Rect(300,300,310,310)

要创建以(300, 300)为中心的10x10矩形,您需要使用(305, 305)。您还可以创建一个辅助函数,将尺寸和中心点转换为必要的矩形参数:

pygame.Rect(300, 300, 10, 10)

然后,您可以像下面这样使用此辅助功能:

def center_rect(x, y, width, height):
    return pygame.Rect(x - width / 2, y - height / 2, width, height)