Создайте функцию, которая может генерировать поверхность «пробела». Сгенерированная поверхность возвращается из функции:
def create_whitespace(rect):
surface = pygame.Surface(rect.size)
pixel_size = 4
pixel_length = rect.h / pixel_size
pixel_height = rect.w / pixel_size
start = rect.x
pixel_grid = [[1]*int(pixel_height) for n in range(int(pixel_length))]
colors = [(255, 255, 255), (205, 205, 205), (155, 155, 155), (100, 100, 100)]
for row in pixel_grid:
for col in row:
color = random.randint(0, 3)
surface.fill(colors[color], (0, 0, pixel_size, pixel_size))
rect.x += pixel_size
rect.y += pixel_size
rect.x = start
return surface
Создайте еще одну функцию, которая blit
s отображает поверхность окна:
def draw_whitespace(surface, ws_surf, rect):
surface.blit(ws_surf, rect)
Blit поверхность к окну в каждом кадре , но генерировать новую случайную «пробел» поверхность реже. Это приводит к тому, что один и тот же «пробел» отображается для нескольких кадров:
ws_cnt = 0
while True:
# [...]
if ws_cnt == 0:
ws_surf = create_whitespace(rect)
ws_cnt += 1
if ws_cnt == 5: # 5 is just an example
ws_cnt = 0
draw_whitespace(screen, ws_surf, rect)
# [...]