3

画面ではなく、地形に合わせたグリッドをレベルに追加したいと考えています。私が考えた方法は、グリッドを形成するすべての線をスプライトとして追加し、それらを地形に合わせて移動することですが、線を画像として表現する方法がわかりません。

私はこれを自分でやろうとしましたが、成功しませんでした。

編集:これが私が試したことです

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

1 に答える 1

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

于 2014-04-04T23:21:19.467 に答える