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