如何在pygame中添加一行作为精灵?

时间:2014-04-04 22:59:25

标签: python pygame line sprite pygame-surface

我想在我的关卡中添加一个网格,而不是屏幕。我想这样做的方法是将构成网格的所有线条添加为精灵并将其与地形一起移动,但我无法弄清楚如何将线条表示为图像。

我自己尝试这样做,但没有成功。

编辑:这是我尝试过的事情

    class Grid():
    def __init__(self):
        self.grid = pygame.Surface(size)
        self.grid.set_colorkey((0,0,0))

    def draw(self):
        # DRAW TILE LINES ----------------------------------------------------------
        grid_x = 0
        grid_y = 0
        for i in range(total_level_width // TILE_SIZE):
            pygame.draw.aaline(self.grid,BLACK,[grid_x,0],[grid_x,total_level_height])
            pygame.draw.aaline(self.grid,BLACK,[0,grid_x],[total_level_width,grid_y])
            grid_x += TILE_SIZE
            grid_y += TILE_SIZE
        # tile test
        pygame.draw.rect(screen,BLACK,(49*TILE_SIZE,34*TILE_SIZE,TILE_SIZE,TILE_SIZE))
        screen.blit(self.grid,(0,0))

创建对象:

grid = Grid()

调用类:(在主程序循环中)

grid.draw()

1 个答案:

答案 0 :(得分:1)

我在尝试做项目时遇到了类似的问题。我使用下面的代码将一条线放到一个表面上,然后将它显示在我的屏幕上。我希望这整个功能可以帮到你。

def blitBoundary(self):
    """ helper function to blit boundary on screen """

    # create a surface
    self.boundSurf=pygame.Surface((1024,768))
    self.boundSurf.set_colorkey((0,0,0))

            """
    if not self.boundary.closePoly:
        (x,y)=pygame.mouse.get_pos()
        pointList=self.boundary.pointList +[[x,y]]
    else:
        pointList=self.boundary.pointList"""

    if len(pointList)>1:
        pygame.draw.aalines(self.boundSurf, (255,255,255), 
            self.boundary.closePoly , pointList, 1)

    self.screen.blit(self.boundSurf,(0,0))

我试图画一个多边形。注释掉了很可能对你没用的if语句。 我的所有行都在一个多边形类对象中。 您可能希望查看pygame.draw.aalines函数。