Как разделить набор плиток для pygame?

#python

Вопрос:

Я создал карту с использованием плиток и экспортировал ее в формате CSV в свое приложение Pygame. Я использовал набор плиток, который я скачал из Интернета. Поэтому я загрузил данные как таковые:

 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 и разбивает отдельные плитки, но у меня нет отдельных плиток, сохраненных по отдельности. У меня просто есть PNG, содержащий все плитки. Я не знаю, как решить эту проблему.

Ответ №1:

Вы можете либо разделить свои плитки на отдельные изображения, используя редактор изображений, например Paint.net или GIMP, или вы можете сделать это в самой pygame.

Один из простых способов «обрезать» прямоугольные части поверхности-это использовать surface.subsurface(Rect) . Видишь https://www.pygame.org/docs/ref/surface.html#pygame.Поверхность.подповерхность.

Пример:

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

Комментарии:

1. 4 значения находятся в «формате pygame Rect». Функция выполняет pygame. Прямой или «прямой» аргумент. 4 значения: [x, y, ширина, высота].

2. Спасибо! Прости, что я понял это прямо перед тем, как увидел твой ответ и удалил свой вопрос. Я обнаружил, что Прямая -> Прямая(слева, сверху, ширина, высота)