【问题标题】:How do I add a line as a sprite in pygame?如何在pygame中添加一条线作为精灵?
【发布时间】:2014-04-04 22:59:25
【问题描述】:

我想在我的关卡中添加一个与地形而不是屏幕保持一致的网格。我想到的方法是将构成网格的所有线条添加为精灵并随着地形移动它们,但我不知道如何将线条表示为图像。

我自己尝试过,但没有成功。

编辑:这是我尝试过的

    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()

【问题讨论】:

    标签: python pygame line sprite pygame-surface


    【解决方案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 函数。

    【讨论】:

    • 我使用 pygame.draw.line() 尝试了这个,我得到的只是一个黑屏。知道我做错了什么吗?我会研究 aalines 并尝试一下。
    • 您是否将_colorkey 设置为 ((0,0,0)) 。这基本上会使初始表面变得透明。
    • 啊,修复了黑屏,但现在线条不画了。我已经发布了我在上面尝试过的内容。
    • 您需要发送一个点列表... [ [x1,y1],[x2y2],... ] 而不是 [x1,y1] , [x2,y2]跨度>
    • 它在 pygame 视线上显示 'startpos,endpos'。我用的是 aaline,不是 aalines。我应该使用后者吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多