Создание поверхности Pygame в другую поверхность Pygame

#python #pygame

Вопрос:

Я пытаюсь создать простую игру, в которой требуются блоки, и я определил координаты блоков в списке, содержащем определенные изображения, и других блоков, содержащих другие изображения.
Поэтому я отображал все изображения относительно главного окна, созданного

 self.master_window = pygame.display.set_mode((width, height))
 

И я создаю форму изображений (0,0) self.master_window .
Но теперь мне нужно дать немного черного пространства вверх и вниз для этих изображений, содержащих блоки, поэтому мне нужно переместить все блоки на 100 пикселей вниз, но я не могу переопределить все координаты (и я не могу использовать некоторые специальные методы, такие как добавление 100 к каждому y блока в списке).
Поэтому я думаю, что если бы я мог создать подобную поверхность self.master_window и разместить на ней все так же, как я делал в self.master_window , а затем разместить эту поверхность в нужной мне координате в главном окне.
Так есть ли какой-нибудь способ сделать это, потому что я пробовал pygame.Rect как поверхность, но, похоже, это не работает.
Извините за то, что в моем посте так мало кода, так как я думаю, что это основной вопрос, и для него не требуется так много кода.
Любая помощь будет признательна.

Ответ №1:

Я пробовал pygame.Rect в качестве поверхности:

Вам нужно создать pygame.Surface объект размером с мир:

 self.draw_surface = pygame.display.Surface((w, h))
 

Нарисуйте все объекты на этой поверхности и, наконец blit , на окне mater:

 self.master_window.blit(self.draw_surface, (offset_x, offset_y))
 

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

1. Спасибо за ваш ответ, pygame.display.set_mode не сработало, но если бы я заменил его на pygame.Surface «тогда», он работал бы отлично.

2. @Aditya76 Да, конечно. Извините, проблема с копированием/вставкой.