首页 > 解决方案 > 如何为 pygame 分离一个图块集?

问题描述

我使用平铺创建了一个地图,并将其作为 CSV 导出到我的 Pygame 应用程序。我使用了从网上下载的tileset。所以我已经像这样加载了数据:

world_data = []
for row in range(ROWS+1):
    r = [-1] * (COLS+1)
    world_data.append(r)

#LOAD IN LEVEL DATA AND CREATE WORLD
with open("stickquestmap{}.csv".format(level), newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for x, row in enumerate(reader):
        for y, tile in enumerate(row):
            world_data[x][y] = int(tile)

现在,我目前正在制作一种process_data方法,该方法可以遍历world_data单个图块并对其进行 blit,但我没有单独保存图块。我只有一个包含所有图块的 PNG。我迷失了如何解决这个问题。

标签: python

解决方案


您可以使用 Paint.net 或 GIMP 之类的图像编辑器将您的图块分成单独的图像,也可以在 pygame 本身中完成。

“裁剪” Surface 的矩形部分的一种简单方法是使用surface.subsurface(Rect). 请参阅https://www.pygame.org/docs/ref/surface.html#pygame.Surface.subsurface

例子:

tileset = pygame.image.load("tileset.png").convert()
grass_tile = tileset.subsurface([0,0,32,32])
dirt_tile = tileset.subsurface([32,0,32,32])

推荐阅读